簡體   English   中英

正則表達式用於特定語言的單詞或名稱

[英]Regex for Words or Names For a Specific Language

我對通過正則表達式對特定於語言的驗證器感興趣。 我知道我可以使用以下任何一種模式來驗證一個人的名字:

“[\p{L}\p{M}]”

但是,如果我希望針對特定語言進行驗證怎么辦? 如果我線程的CurrentUICulture或CurrentCulture設置將"[\\w]"的含義簡單地轉換為適用於德語,西班牙語,英語,尤其是中文的語言,那就太好了。 這樣行嗎? 如果是,那么這可能是我的答案。

如果沒有,那么我的下一個興趣就是使用regex腳本注釋 但是,我注意到:

  1. 該鏈接中給出的列表不包括簡體中文,我對此特別感興趣。
  2. 我認為.NET正則表達式功能不支持基於腳本的匹配。 是? 沒有?

因此,如果我不能使前兩個選項起作用,那么我的最后一個選擇是轉向named blocks 至少.net支持的命名塊列表包括CJK的多個條目。 我想我可以簡單地組合幾個CJK塊,並稱其為“簡體中文”。

有什么想法嗎?

我的結論是,在.net設置中,不存在對CurrentUICulture敏感的正則表達式之類的東西。 我還得出結論,最寬松的合理方案是執行一次驗證-同時適用於所有語言-只是拒絕所有形式的不可打印字符,“裝飾符號”,尖括號(以防止標記注入)和數學符號:

@”^[^\p{C}<>\p{Sm}\p{So}]*$”

中間允許的方法是使用一個同時捕獲西方和東方字符集(包括變音符號和“組合字符”)的字符串:

@"^[\p{L}\p{M}\p{Pd}\p{Pi}\p{Pf}\s]*$"

如果我只希望使用西方字符,則最不允許的方法是:

@"^[\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{Pd}\p{Pi}\p{Pf}-[\p{N}]]*$"

以上內容仍然允許使用所有形式的引號,這些引號通常適用於O'Toole之類的名稱。

暫無
暫無

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

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