草庐IT

Javascript 正则表达式部分匹配

我有一个正则表达式模式,它验证一个三位数/^\d{3}$/.test("123")//true/^\d{3}$/.test("123.")//false我想将此正则表达式用作文本框的输入限制。基本上,如果新值匹配,我允许输入字符,否则我阻止它。问题是没有任何值会匹配,因为“1”不是完全匹配,并且不允许我输入它。是否有任何方法可以在javascript中测试正则表达式的部分匹配?/^\d{3}$/.test("123")//true/^\d{3}$/.test("12")//"partialmatch"/^\d{3}$/.test("a12")//false编辑\d{3}只是一个例子。我

javascript - 防止污染 JavaScript 中 RegExp 构造函数的属性

这是个难题,我知道如何解决它,但我想知道是否有(更)简单的方法。简而言之,无论何时在JavaScript中执行正则表达式,都会在RegExp构造函数中为某些属性赋值。例如:/foo/.test('football')//->trueRegExp.input//->"football"RegExp.rightContext//->"tball"我想在不影响这些属性的情况下执行正则表达式。如果那不可能(我认为不可能),我想至少在之后将它们恢复到以前的值。我知道input/$_是可写的,但大多数其他的似乎不是。一种选择可能是重建一个正则表达式来重新应用所有这些值,但我认为这会非常困难。我想要

javascript - 如何在 Javascript 中实现词法分析

大家好,感谢阅读我目前正在尝试做一个谷歌风格的计算器。你输入一个字符串,它判断是否可以计算并返回结果。我从基础慢慢开始:+-/*和括号处理。我愿意随着时间的推移改进计算器,不久前学习了一些词法分析,我构建了一个标记列表和相关的正则表达式模式。这种工作很容易适用于Lex和Yacc等语言,除非我开发的是纯Javascript应用程序。我试图将这个想法转录成Javascript,但我无法弄清楚如何以干净漂亮的方式处理所有内容,尤其是嵌套括号。分析让我们定义什么是计算器查询://NONTERMINALEXPRESSIONS//query->statementquery->ε//meansend

javascript - 部分匹配字符串与正则表达式

假设我有这个正则表达式:/abcd/假设我想根据该正则表达式检查用户输入并禁止在输入中输入无效字符。当用户输入“ab”时,它无法匹配正则表达式,但我不能禁止输入“a”然后输入“b”,因为用户不能一次输入所有4个字符(复制/粘贴除外)。所以我在这里需要的是部分匹配,它检查不完整的字符串是否可能与正则表达式匹配。Java有一些用于此目的的东西:.hitEnd()(在此处描述http://glaforge.appspot.com/article/incomplete-string-regex-matching)python本身并不这样做,但有这个包可以完成这项工作:https://pypi.

javascript - Javascript 将哪种正则表达式算法用于正则表达式?

我正在阅读thisarticle今天介绍两种不同的正则表达式算法。根据thearticle旧的Unix工具,如ed、sed、grep、egrep、awk和lex,都在它们的正则表达式中使用所谓的ThompsonNFA算法...然而,较新的工具(如Java、Perl、PHP和Python)都对其正则表达式使用不同的算法,这些算法要慢得多。Thisarticle完全没有提及Javascript的正则表达式算法,(是的,我知道那里有各种JS引擎)但我想知道是否有人知道他们使用了哪些算法,以及是否应该将这些算法换成ThompsonNFA。 最佳答案

Javascript - 正则表达式 - 字边界 (\b) 问题

我在正则表达式中使用\b和希腊字符有困难。在thisexample[a-zA-ZΆΈ-ώἀ-ῼ]*成功标记了我想要的所有单词(希腊语和英语)。现在考虑我要查找包含2个字母的单词。对于英语,我使用类似this:的东西\b[a-zA-Z]{2}\b。你能帮我写一个正则表达式,成功地用2个字母标记希腊语单词吗?(为什么?我的最终目标是删除它们)。使用的文本:GreekMONOTONIC:Τογάρούνκαιπαρ'υμίνλεγόμενον,ώςποτεΦαέθωνΗλίουπαίςτοτουπατρόςάρμαζεύξαςδιατομήδυνατόςείναικατάτηντουπατρ

相当于 Ruby 的 String#scan 的 JavaScript

这个存在吗?我需要像这样解析一个字符串:thedogfromthetree得到类似的东西[[null,"thedog"],["from","thetree"]]我可以用一个RegExp和String#scan在Ruby中完成。JavaScript的String#match无法处理这个,因为它只返回RegExp匹配的内容而不是捕获组,所以它返回类似的内容["thedog","fromthetree"]因为我在我的Ruby应用程序中多次使用String#scan,所以如果有一种快速的方法可以在我的JavaScript端口中复制此行为,那就太好了。编辑:这是我正在使用的正则表达式:http:

javascript - 将 ,(逗号) 替换为 .(点) 并将 .(点) 替换为 ,(逗号)

我有一个字符串"1,23,45,448.00",我想用小数点替换所有逗号,用逗号替换所有小数点。我需要的输出是“1.23.45.448,00”我尝试用.替换,如下:varmystring="1,23,45,448.00"alert(mystring.replace(/,/g,"."));但是,在那之后,如果我尝试用替换.,它也会替换第一个替换的。为,导致输出为"1,23,45,448,00" 最佳答案 使用replace带有回调函数,它将替换,通过.和.通过,.函数的返回值将用于替换匹配的值。varmystring="1,23,45

javascript - 从正则表达式创建数组

我有这个字符串:{example1}{example2}{example3}这是查找这些{anythinginit}的正则表达式:/\{.*?\}/g现在我想知道如何将它们放入一个数组中,以便我可以执行forin语句。我想要一个类似于array("{example1}","{example2}","{example3}");的数组? 最佳答案 your_array=string.match(pattern)http://www.w3schools.com/jsref/jsref_match.asp

Javascript 正则表达式 - 拆分字符串

努力满足正则表达式要求。我需要在找到正斜杠的任何地方将一个字符串拆分成一个数组。但如果正斜杠前面有转义符,则不是。例如,如果我有这个字符串:hello/world我希望它像这样被拆分成一个数组:arrayName[0]=helloarrayName[1]=world如果我有这个字符串:hello/wo\/rld我希望它像这样被拆分成一个数组:arrayName[0]=helloarrayName[1]=wo/rld有什么想法吗? 最佳答案 我不会将split()用于这项工作。匹配路径组件本身比匹配分隔符要容易得多。例如:varsub