Javascript 如何为while循环构建正则表达式?
我正在尝试为Javascript 如何为while循环构建正则表达式?,javascript,jquery,regex,interpreter,Javascript,Jquery,Regex,Interpreter,我正在尝试为创建一个常规表达式,而循环要包含在我的程序中。这就是我到目前为止的想法: /^*while+\(*([a-zA-Z][a-zA-Z0-9\]*([=])*([a-zA-Z][a-zA-Z0-9\]*[0-9]+)*)*$/ 但问题是我希望条件包括 ==, <, >, <=,>= ==,= 为了测试(a==5)或(a=5),而不仅仅是=,。我尝试将以下模式添加到我的表达式中:([=]) 如何实现这一点?此正则表达式将匹配所有情况: *while +\
创建一个常规表达式,而循环要包含在我的程序中。这就是我到目前为止的想法:
/^*while+\(*([a-zA-Z][a-zA-Z0-9\]*([=])*([a-zA-Z][a-zA-Z0-9\]*[0-9]+)*)*$/
但问题是我希望条件包括
==, <, >, <=,>=
==,=
为了测试(a==5)
或(a=5)
,而不仅仅是=,
。我尝试将以下模式添加到我的表达式中:([=])
如何实现这一点?此正则表达式将匹配所有情况:
*while +\( *([a-z]\w*) *([=<>]=?) *([a-z]\w*|\d+) *\) *
这个正则表达式对你有用吗
^ *while +\( *([a-zA-Z][a-zA-Z0-9_]*) *([=<>]{1,2}) *([a-zA-Z][a-zA-Z0-9_]*|[0-9]+) *\) *$
^*while+\(*([a-zA-Z][a-zA-Z0-9\]*([=]{1,2})*([a-zA-Z][a-zA-Z0-9\]*.[0-9]+)*\)*$
我所做的只是为1或2个操作符{1,2}
添加一个检查。除非我误解了,否则这应该行。谢谢@stribizev。但它也将匹配此,例如(a=5)
。这是一个错误,我希望它只匹配上面提到的情况。请现在查看。谢谢@Stribizev。现在可以了。谢谢你把我的regexp也缩短了。不客气。另外,请看另一个关于的建议=代码>支持。谢谢。我已经放弃了那个案子。我可以问你一个问题吗?为什么是?:
在前面使用=代码>?为什么不只是像(=|==|==)
?另外,当您希望添加“==”作为相等比较器时,为什么您的测试字符串有“=”?@ray非常感谢。在act中,我不想测试它们的=
,但我不知道如何使其用于=
,这就是为什么我把它放在那里,它现在可以工作了。非常感谢:)不客气。我应该注意到还有很多其他的方法来编写该部分,比如[=]+
或[=]
{1,2},但是这些方法会“过度匹配”,捕捉字符串,比如===
或=@Ray:(=|==|==)
将无法按预期工作,因为正则表达式引擎将从左到右读取,并在=/code>中匹配
。所以,==
必须来得更早。而且,当我们有一个完整的列表时,我们总是可以把它缩短,如果我们有模式,为什么要列出所有的东西呢?
*while +\( *([a-z]\w*) *((?:!=|[=<>]=?)) *([a-z]\w*|\d+) *\) *
^ *while +\( *([a-zA-Z][a-zA-Z0-9_]*) *([=<>]{1,2}) *([a-zA-Z][a-zA-Z0-9_]*|[0-9]+) *\) *$