【问题标题】:Regular expression anything but letters (javascript)正则表达式除了字母(javascript)
【发布时间】:2016-11-22 02:20:55
【问题描述】:

我想通过检查输入是否包含任何字母来验证表单域。应允许所有其他字符和数字。我的正则表达式很糟糕,我在任何地方都找不到正确的解决方案。

我试过这个:

/[^A-Za-z]/g

但这仅在字符串仅包含字母时才返回 false(即 432ad32d 也应该返回 false)。

谁能告诉我怎么做?

【问题讨论】:

  • 是否允许é? ;-) ݰӜ 呢?
  • 好问题。不 :) 我想用它来验证电话号码,但由于有些人使用某些字符,我宁愿不只检查数字。但是,考虑到这一点,也许最好检查允许的字符(0-9、-、+、(、)和空格)。长度无关紧要。
  • 这正是我希望你做出的结论 :)
  • 我是否理解您想要检测文本值是否包含字母? IE。正式表达,对于一串字符,你想知道这个字符串中是否存在一个字符是字母?例如: - "aabbcc": 只包含字母,你想要true 还是false? - “23a”:包含字母和数字,你要真实,你要true还是false? - “123”:只包含数字,你想要true 还是false? - "&%£": 只包含符号,你想要true 还是false
  • 是的,对于一个非常基本的电话号码验证,我想允许除字母之外的任何内容。因此,如果输入中有一个或多个字母,则正则表达式应返回 false。然而,正如卢卡斯指出的那样,那里有很多特殊的“字母”,所以检查允许的字符而不是不允许的字符可能是一个更好的解决方案,所以我可能会去做。不过谢谢!

标签: javascript regex


【解决方案1】:

在您的情况下,使用允许字符的白名单是最好的方法:

/^[-+\d(), ]+$/

Unicode 有很多东西,它称之为字母,最好不要一开始就搞乱它。而且 JavaScript 正则表达式不太适合处理这些问题(例如,除非您使用外部库,否则它们缺少诸如 \p{L} 之类的东西)。

此外,通过使用白名单方法,您可以确定表单将接受的输入类型。您无法预测用户可能会输入的混乱类型。想事情like this

to͇̹̺ͅɲ̴ȳ̳p̯͍̭o̚p̯͍̭o̚ n̐y̡h̸̡̪̯ͨ͊̽̅̾̎ȩ̬̩̾͛ͪ̈́̀́͘c̷̙̲̝͖ͭ̏ͥͮ͟oͮ͏̮̪̝͍m̲̖͊̒ͪͩͬ̚̚͜ȇ̴̟̟͙̞ͩ͌͝s̨̥̫͎̭ͯ̿̔̀ͅ

:-)

【讨论】:

  • 最好和最完整的答案恕我直言。
【解决方案2】:
/[^A-Za-z]/

这个正则表达式匹配单个非字母,这不是很有用。 Yura Yakym 的答案匹配字符串的开头,任意数量的非字母,然后是字符串的结尾,这在匹配时很有用:这意味着您的字符串只包含那些东西。

另一个有用的正则表达式是:

/[A-Za-z]/

这匹配单个字母,这很有用当它不匹配时:这意味着你的字符串根本不包含任何字母。

对于您的一般问题,“我如何确保字符串缺少字母?”,我会使用第二个正则表达式:我会尝试匹配一个字母,但希望不会这样做。不过,对于输入验证,我更喜欢描述所有可能的有效输入的正则表达式。如果/^[^A-Za-z]*$/ 这样做,那么就使用它。如果您有其他要求,请将其添加到其中。没有多个“没有字母?好的。没有非破折号的特殊字符?好的。” ...好吧,除非您想准确地提供有关此类事情的错误消息。

【讨论】:

    【解决方案3】:

    试试这个正则表达式:^[^A-Za-z]*$

    【讨论】:

    • * 运算符匹配零个或多个表达式。所以它会匹配一个空字符串。我想你的意思是+
    • 问题是检查字符串是否不包含任何字母。所以空字符串没有字母。它用于表单验证。那么,也许需要允许空字符串?
    【解决方案4】:

    您需要包含锚点

    /^[^A-Za-z]+$/g

    这将确保字符串以一个或多个数字/特殊字符开头和结尾

    【讨论】:

      【解决方案5】:

      您忘记了开始和结束标记。你也不需要g 标志。

      /^[^A-Za-z]*$/
      

      不管怎样,这很奇怪,因为我仍然可以输入西里尔字母。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-01
        • 1970-01-01
        • 2015-03-26
        • 1970-01-01
        • 2011-03-05
        • 2023-03-30
        相关资源
        最近更新 更多