簡體   English   中英

正則表達式,除字母外(javascript)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM