我正在尝试创建一个正则表达式来检查字符串并匹配点、破折号或下划线。我只希望它最多允许 3 个,否则它不应该与字符串匹配。
例如,如果我输入 qwerty-123-123-123
就可以了。
如果我输入 something-123_world
就可以了。
但是,如果我输入 qwerty-123-_whatever-something
这应该不匹配。
我当前的正则表达式与我想要的特定字符匹配,但我似乎不知道如何最多只允许 3 个字符。我认为 {1,3}
就是答案,但这似乎不起作用。我还查看了 ?=
正向查找,但不确定这是否正确/甚至能够让它执行我想要的操作。
最佳答案
您可以使用
/^[^-_.]*(?:[-_.][^-_.]*){1,3}$/
请参阅regex demo
详细信息
^
- 字符串开头[^-_.]*
- 除-
、_
和.
之外的任何 0+ 个字符(?:[-_.][^-_.]*){1,3}
- 出现一次、两次或三次[-_.]
--
、_
或.
[^-_.]*
- 除-
、_
和.
之外的任何 0+ 个字符
$
- 字符串结尾。
关于javascript - 检查字符串中的任意位置是否包含 1 到 3 个 .-_ 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213436/