我有這種形式,我想從哪裏提交數據到數據庫。數據是UTF8。我在匹配換行符時遇到問題。我使用的模式是這樣的:直到用戶將新線在他的文本框中Unicode正則表達式匹配換行符?
~^[\p{L}\p{M}\p{N} ]+$~u
這種模式正常工作。我曾嘗試在課堂內使用\p{Z}
,但沒有成功。我也嘗試過「,但它沒有奏效。
任何幫助,非常感謝。謝謝!
我有這種形式,我想從哪裏提交數據到數據庫。數據是UTF8。我在匹配換行符時遇到問題。我使用的模式是這樣的:直到用戶將新線在他的文本框中Unicode正則表達式匹配換行符?
~^[\p{L}\p{M}\p{N} ]+$~u
這種模式正常工作。我曾嘗試在課堂內使用\p{Z}
,但沒有成功。我也嘗試過「,但它沒有奏效。
任何幫助,非常感謝。謝謝!
Unicode換行符是緊接換行符的回車符,否則它是具有垂直空白字符的任何字符。
但它看起來像你試圖匹配那裏的通用空格。在Java中,這將是
[\u000A\u000B\u000C\u000D\u0020\u0085\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000]
可以通過使用範圍爲「僅」這個被縮短:
[\u000A-\u000D\u0020\u0085\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]
在包括水平空白(\h
)和垂直空白(\v
),其可以或者可能與一般空白不相同(\s
)。
它也看起來像你試圖匹配字母數字。
[\pL\pM\p{Nl}]
。\pN
,因爲它們或者只是\p{Nd}
或者有時是[\p{Nd}\p{Nl}]
。[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&&\p{So}]]
- 如果您的正則表達式引擎支持這些類型的操作(Java's)。這就是\w
在支持Unicode的正則表達式語言(其中Java不是其中的一種)中的作用。在舊版本的Perl,你可能會寫一個換行符作爲
(?:\r\n|\p{VertSpace})
雖然說現在更好寫成
(?:(?>\r\n)|\v)
這正是
\R
火柴。
Java在這些事情上非常笨拙。在那裏你必須寫一個linebreak作爲
(?:(?>\u000D\u000A)|[\u000A-\u000D\u0085\u2028\u2029])
這當然需要額外的bbaacckkssllasshheess當寫作一個字符串。
14個常見字符類正則表達式的其他Java等價性使它們能夠與Unicode一起使用我給in this answer。您可能必須使用其他類似Java的正則表達式語言,這些語言不能識別Unicode。
感謝您的回答。那麼這實際上是一個「評論」的形式。用戶在那裏寫下他們的評論,並將他們存儲到數據庫中。問題是,當我試圖改變與「輸入」行正則表達式不匹配。但現在它! :) – Booya 2010-12-11 15:11:49