簡體   English   中英

如何創建禁止符號的正則表達式?

[英]How do I create a regular expression that disallows symbols?

我有一個關於正則表達式的問題。 我目前正在構建一個注冊表,您可以在其中輸入全名(給定的姓名和姓氏),但是我不能使用[a-zA-Z]作為驗證檢查,因為這會排除每個帶有“外國”字符的人。

確保在php和javascript中都沒有輸入符號的最佳方法是什么?

提前致謝!

通常,此問題的正確解決方案是POSIX字符類 特別是,您應該可以使用[:alpha:] (或[:alphanum:] )來執行此操作。

盡管為什么要阻止用戶輸入與輸入時完全相同的名稱? 您確定可以准確告訴他們姓名中允許使用哪些字符嗎?

您首先需要從概念上區分“外國”字符和“符號”。 您可能需要在此處進行說明。

記賬其他語言意味着記賬其他代碼頁,這實際上超出了簡單的正則表達式的范圍。 可以做到,但是在更高的層次上,代碼頁必須起作用。

如果您嚴格希望正則表達式在標點和符號上失敗,則可以使用[^[:punct:]] ,但是我不確定[:punct:] POSIX類對某些奇怪的unicode符號有何反應。 當然,這會阻止某些人將“ John Smythe-Jones”作為他們的名字(因為“-”是標點符號),所以我建議不要使用它。

我認為這不是一個好主意。 請參閱如何檢查真實姓名和姓氏-PHP

我不知道您將如何解釋有效或無效的內容,並且根據您的全球影響力,您可能無法在不鎖定某人的情況下刪除任何內容。 但是谷歌搜索發現這一點可能會有所幫助。

http://nadeausoftware.com/articles/2007/09/php_tip_how_strip_symbol_characters_web_page

您可以遍歷輸入字符串,並使用String.charCodeAt()函數獲取每個字符的整數字符代碼。 為自己設置一系列可接受的字符並進行比較。

如前所述,POSIX字符類可能是最好的選擇。 但是它們的支持(和替代方法)的細節與特定正則表達式變體的細節有很大不同。

PHP顯然不支持他們,但JavaScript

這意味着對於JavaScript,您將需要使用字符范圍:/ [\\ u0400- \\ u04FF] /匹配任意一個西里爾字母。 顯然,這需要花費一些時間,但是XML 1.0 Recommendation(來自W3C)並沒有列出很多范圍,盡管已經有好幾年了。

一種方法可能是對JavaScript中的客戶端進行有限檢查,而僅對服務器端進行完全檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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