正则表达式澄清

时间:2014-01-23 07:14:06

标签: javascript regex

我对regex相对较新。我发现这个regex正在使用,并且无法理解它是如何工作的。

([\(]*([\w][\/]?[\w]?(%)?(,)?)*|[\/.]|[\w]([\-\*|\+|\\|\<\>|\=]([\(]*[\w][\/]?(%)?[\)]?[\)]?(,)?)+)*[\)]?)*$/

我理解大部分基本语法,但无法理解这意味着什么。

任何明确的信息都将受到赞赏!这是在javascript中使用的标记。

谢谢!

3 个答案:

答案 0 :(得分:2)

同样没有不需要的字符:

/(\(*(\w\/?\w?(%)?(,)?)*|[\/.]|\w([-*+\\<>=](\(*\w\/?(%)?\)?\)?(,)?)+)*\)?)*$/

此模式可以匹配此类字符串(或任何内容):

(((a/b%,(((a/b%,///./././(((a/b%,k*((((((((P/%)),)

答案 1 :(得分:2)

你的正则表达式:

([\(]*([\w][\/]?[\w]?(%)?(,)?)*|[\/.]|[\w]([\-\*|\+|\\|\<\>|\=]([\(]*[\w][\/]?(%)?[\)]?[\)]?(,)?)+)*[\)]?)*$/

可视化为:

Regular expression visualization

Debuggex Demo

除非你的正则表达式中有拼写错误,否则它永远不会匹配任何东西;正则表达式以$/结尾,这意味着字符串的结尾后跟/,除非您匹配多行。如果这是家庭作业,我会说老师正在开玩笑,因为$/通常不匹配。

经过一些简化后,你得到:

(\(*(\w\/?\w?(%)?(,)?)*|[\/.]|\w([-*|+\\<>=](\(*\w\/?(%)?\)?\)?(,)?)+)*\)?)*$/

Regular expression visualization

如果您不关心分组,则类似:

(\(|[\/.]|(\w\/?\w?%?,?)|\w([-*|+\\<>=](\(*\w\/?%?\)?\)?,?)+)*\)?)*$/

Regular expression visualization

Debuggex Demo

这可以将(a*|b*)*简化为(a|b)*

答案 2 :(得分:0)

要了解有关正则表达式的更多信息,请参阅:regex101在此处提供代码并阅读说明。

你的正则表达式:([\(]*([\w][\/]?[\w]?(%)?(,)?)*|[\/.]|[\w]([\-\*|\+|\\|\<\>|\=]([\(]*[\w][\/]?(%)?[\)]?[\)]?(,)?)+)*[\)]?)*$

将匹配

之类的内容
(d/f%,
something
122

但是无法匹配像

这样的东西
--{}

说明:

enter image description here