Javascript 检查字符串中的任何位置是否包含介于1到3个字符之间的。-\uu

Javascript 检查字符串中的任何位置是否包含介于1到3个字符之间的。-\uu,javascript,regex,Javascript,Regex,我正在尝试创建一个正则表达式,用于检查字符串并匹配点、破折号或下划线。我只希望它允许最多3个,否则它不应该匹配字符串 例如,如果我输入qwerty-123-123-123,就可以了 如果我输入something-123_world就可以了 但是,如果我输入qwerty-123-_whatever-something,这应该不匹配 我当前的正则表达式匹配我想要的特定字符,但我似乎不知道如何最多只允许3个字符。我认为{1,3}是答案,但这似乎不起作用。我还查看了肯定查找,但不确定这是否正确/甚至无

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

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

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

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

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

您可以使用

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

详细信息

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

    • 除了正则表达式之外,另一个选项是使用JavaScript

      让str1='qwerty-123-123-123';
      设str2='something-123_world';
      设str3='qwerty-123-_whatever-something';
      常量正则表达式=/[.-]/g;
      设min=1;
      设max=3;
      函数验证(txt){
      var len=txt.match(regex).length;
      
      if(len>=min&&len ah这真是个好主意!谢谢!你能写一个答案让我投票并接受吗:)@Wiktor奇怪的微笑无处不在!
      -.
      一个简单的解决办法是拆分并检查长度,例如,
      if(string.split(/-.]/).length<5){