[英]Regular expression anything but letters (javascript)
我想通过检查输入中是否包含字母来验证表单字段。 所有其他字符和数字都应允许。 我对正则表达式非常不好,在任何地方都找不到正确的解决方案。
我已经试过了:
/[^A-Za-z]/g
但这仅在字符串仅包含字母的情况下才返回false(即432ad32d也应返回false)。
谁能告诉我该怎么做?
在您的情况下,使用允许字符白名单是最好的方法:
/^[-+\d(), ]+$/
Unicode有很多东西叫做字母 ,最好不要把它弄乱。 JavaScript正则表达式不太适合处理这些(例如,除非您使用外部库,否则它们缺少\\p{L}
类的东西)。
另外,通过使用白名单方法,您可以确定表单将接受的输入种类。 您无法预测用户可能输入的混乱情况。 想想事情是这样 :
TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉͠P̯͍̭Ó̚N̐Y̡H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ
:-)
/[^A-Za-z]/
此正则表达式与单个非字母匹配,这不是很有用。 Yura Yakym的答案匹配字符串的开头,任意数量的非字母,然后匹配字符串的结尾,这在匹配时很有用:这意味着您的字符串仅包含那些内容。
另一个有用的正则表达式是:
/[A-Za-z]/
这匹配一个字母, 当它不匹配时非常有用:这意味着您的字符串根本不包含任何字母。
对于您的一般问题,“如何确保字符串中没有字母?”,我将使用第二个正则表达式:我将尝试匹配字母,但希望不这样做。 不过,对于输入验证,我希望使用正则表达式来描述所有可能的有效输入。 如果/^[^A-Za-z]*$/
这样做,则使用它。 如果您还有其他要求,请将其添加到其中。 没有多个“没有字母?好。没有非破折号的特殊字符?好。” ...好吧,除非您想提供有关此类事情的错误消息。
试试这个正则表达式: ^[^A-Za-z]*$
您需要包括锚点
/^[^A-Za-z]+$/g
这样可以确保字符串以一个或多个数字/特殊字符开头和结尾
您忘记了开始和结束标记。 另外,您不需要g
标志。
/^[^A-Za-z]*$/
无论如何,这很奇怪,因为我仍然可以输入圆形字母。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.