javascript - 检查字符串中的任意位置是否包含 1 到 3 个 .-_ 字符

标签 javascript regex

我正在尝试创建一个正则表达式来检查字符串并匹配点、破折号或下划线。我只希望它最多允许 3 个,否则它不应该与字符串匹配。

例如,如果我输入 qwerty-123-123-123 就可以了。

如果我输入 something-123_world 就可以了。

但是,如果我输入 qwerty-123-_whatever-something 这应该不匹配。

Current regex

我当前的正则表达式与我想要的特定字符匹配,但我似乎不知道如何最多只允许 3 个字符。我认为 {1,3} 就是答案,但这似乎不起作用。我还查看了 ?= 正向查找,但不确定这是否正确/甚至能够让它执行我想要的操作。

最佳答案

您可以使用

/^[^-_.]*(?:[-_.][^-_.]*){1,3}$/

请参阅regex demo

详细信息

  • ^ - 字符串开头
  • [^-_.]* - 除 -_. 之外的任何 0+ 个字符
  • (?:[-_.][^-_.]*){1,3} - 出现一次、两次或三次
    • [-_.] - -_.
    • [^-_.]* - 除 -_. 之外的任何 0+ 个字符
  • $ - 字符串结尾。

关于javascript - 检查字符串中的任意位置是否包含 1 到 3 个 .-_ 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213436/

相关文章:

javascript - 如何移除侧边栏并将面板置于中心

javascript - 对齐 self :flex start is not sending child element to the top

javascript - 是否考虑了 svg 文本上 css 类的动态变化?

javascript - 类型错误 : "this is undefined" When using forEach on member array

Python3 重新分组几个组,即使有些组丢失了

正则表达式选择所有 .c 文件,但带有特定前缀的文件除外

javascript - `insertBefore()` 或 `insertAfter()` 当起点和终点相同时删除元素

java - Java正则匹配中如何匹配字符串中不以英文字母开头的所有数字组合

C++11 正则表达式分组

regex - 在 PowerShell 中使用正则表达式提取子字符串