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]+) *\) *$