2011-08-26 33 views
3

我有一個顯示名稱字段,我必須使用Ruby正則表達式進行驗證。除了特殊字符(如*()!@#$%^ & ....)之外,我們必須匹配法語,阿拉伯語,中文,德語,西班牙語等所有語言字符....我被困在如何匹配那些非 - 拉丁字符。如何匹配所有語言的字符,但ruby中的特殊字符

+0

也許如果你提供了一些字符串,顯示樣本輸入和樣本輸出,人們可以幫助更多。你的問題很不清楚。 – Geo

+0

你是指所有字母的所有字母? – BoltClock

+0

@Bolt這實際上是可行的,如果你有正確的工具 – NullUserException

回答

3

有兩種可能性:

  • 創建包含每個符號否定字符類的正則表達式,你要匹配:

    if (name ~= /[^*[email protected]%\^]/) # add everything and if this matches you are good 
    

    這種解決方案可能是不可行,因爲即使你只是包含最常見的符號,你也必須插入大量的符號。


1

從Ruby 1.9的開始,StringRegex類是unicode的識別。您可以放心地使用正則表達式字字符選擇\w

"可口可樂!?!".gsub /\w/, 'Ha' 
#=> "HaHaHaHa!?!" 
+0

除包括'_' – Qtax

+0

不知何故是,打我爲什麼? – edgerunner

+0

因爲'\ w'被定義爲'[0-9A-Za-z_]'。 –

0

在紅寶石> 1.9.1(可能更早),可以使用\p{L}以匹配所有語言的單詞字符(不oniguruma創業板在前面的回答中所述) 。

相關問題