【问题标题】:javascript regex validationjavascript正则表达式验证
【发布时间】:2010-04-29 18:14:50
【问题描述】:

有什么方法可以找出哪个输入字符不符合正则表达式模式

例如:考虑 [A-Za-z\s.&] 只是允许的,但用户输入像“测试/字符串”,其中“/”使输入无效。 如何找到失败的正则表达式(我们的案例'/')

【问题讨论】:

  • 所有答案都很好。 RoToRa 完全符合我的需要。谢谢你

标签: javascript regex


【解决方案1】:

您可以删除有效字符,您将得到一串无效字符:

var invalid = "test/string".replace(/[A-Za-z\s.&]/g,""); // results in "/"

【讨论】:

    【解决方案2】:

    只需否定你的字符类并找出匹配的字符。

    [^A-Za-z\s.&]
    

    将匹配test/string 中的/。所以,你得到了

    if (/^[A-Za-z\s.&]+$/.test(subject)) {
        // Successful match
    } else {
        result = subject.match(/[^A-Za-z\s.&]/g);
        // result is an array that contains all the characters that failed the match
    }
    

    【讨论】:

      【解决方案3】:

      要查找哪些字符失败,用/[A-Za-z\s.&]+/拆分,会得到无效字符列表

      "test/string".split(/[A-Za-z\s.&]+/).join('')
      /
      

      要检查用户名是否有效,您可以使用 ^ 和 $ 锚。

      /^[A-Za-z\s.&]+$/
      

      【讨论】:

      • 我认为他已经掌握了那部分,但他想找出为什么匹配失败,i。 e.在哪个字符上。