[英]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.