我正在尝试创建一个与任意数量的一组字符串匹配的 JavaScript 正则表达式:例如,匹配onetwothreethreetwooneor的正则表达式twotwotwooneoneonethreeonetwo。是否可以创建一个正则表达式来以上述方式匹配单词“一”、“二”和“三”的任意组合?
您可以简单地使用交替和重复。您可能还想使用锚点来确保整个字符串都由该模式组成。然后你可以简单地使用Javascript的内置test函数来进行检查:
if(/^(?:one|two|three)*$/.test(input))
...
Run Code Online (Sandbox Code Playgroud)
如果必须至少有一个术语(不允许空字符串),请使用+而不是*:
if(/^(?:one|two|three)+$/.test(input))
...
Run Code Online (Sandbox Code Playgroud)
抑制捕获并且应该始终使用(当然,除非您明确需要捕获)?:。这是一个很好的实践,可以显着提高更复杂模式的性能。
如果您想查找输入中符合此模式的子字符串,请省略锚点 (^和$),使用全局标志并在字符串上g使用:match
var matchArray = input.match(/(?:one|two|three)+/g);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2242 次 |
| 最近记录: |