我正在尝试创建与任何数量的一组字符串匹配的JavaScript正则表达式:例如,将匹配onetwothreethreetwoone
或twotwotwooneoneonethreeonetwo
匹配的正则是。是否可以创建一个正则表达式,以上述方式匹配单词"一个","两个"one_answers"三"的任何组合?
您可以简单地使用交替和重复。您可能还需要使用锚点,以确保整个字符串由此模式组成。然后,您只需使用JavaScript的内置test
函数即可进行检查:
if(/^(?:one|two|three)*$/.test(input))
...
如果必须至少有一个术语(不允许空字符串)使用+
而不是*
:
if(/^(?:one|two|three)+$/.test(input))
...
?:
抑制捕获,应始终使用(当然,除非您明确需要捕获)。这是很好的做法,可以大大提高更复杂的模式的性能。
如果要找到符合此模式的输入的子字符串,请省略锚点(^
和$
),请使用全局标志g
并在字符串上使用match
:
var matchArray = input.match(/(?:one|two|three)+/g);
/(one|two|three)+/
组在括号中,内部的|
代表"或"和+
表示"一个或多个"。