我正在尝试创建一个匹配任意数量的一组字符串的 JavaScript 正则表达式:例如,一个匹配onetwothreethreetwoone
或twotwotwooneoneonethreeonetwo
. 是否有可能以上述方式创建一个匹配单词“一”、“二”和“三”的任意组合的正则表达式?
问问题
1738 次
2 回答
3
您可以简单地使用交替和重复。您可能还想使用锚点来确保整个字符串都由这种模式组成。然后您可以简单地使用 Javascript 的内置test
函数进行检查:
if(/^(?:one|two|three)*$/.test(input))
...
如果必须至少有一个术语(不允许使用空字符串),请使用+
代替*
:
if(/^(?:one|two|three)+$/.test(input))
...
?:
抑制捕获并应始终使用(当然,除非您明确需要捕获)。这是一种很好的做法,可以显着提高更复杂模式的性能。
如果要查找符合此模式的输入子字符串,请省略锚(^
和$
),使用全局标志g
并match
在字符串上使用:
var matchArray = input.match(/(?:one|two|three)+/g);
于 2012-12-22T23:42:50.493 回答
1
/(one|two|three)+/
组在括号中,|
里面代表“或”,+
意思是“一个或多个”。
于 2012-12-22T23:41:38.890 回答