2014-07-24 67 views
0

我創建了一個正則表達式支持UTF8字符:如何創建正則表達式以省略Unicode字符'θ'?

XRegExp("^(\\p{L}|[0-9_/-]|\\s)+$"); 

現在,我不想支持Unicode字符: 'θ'(THETA)。

+0

我不是最好的正則表達式,但作爲一個退步到不知道,你可以明確地檢查theta,如果它不是那麼然後使用其他。 – Kendra

回答

1

可以使用負前瞻爲:

^(?!.*θ)[\p{L}\s0-9_/-]+$ 

在您的代碼:

XRegExp("^(?!.*θ)[\\p{L}\\s0-9_/-]+$"); 
+0

沒有它沒有工作。該領域正在接受theta。 – vermaraj

1

我建議最微小的調整,以你的表達:

^(?:(?!θ)\\p{L}|[0-9_/-]+|\\s+)+$ 

負前瞻(?!θ)確保您可能匹配的\p{L}不是θ。還在\s和中間部分添加了一個+量詞,這樣如果我們連續有幾個,我們可以直接匹配它們而不需要循環交替。

+0

我還是不明白爲什麼你加了+量詞到\ s – vermaraj

+0

如果你連續有幾個空格,'\ s +'可以一次性匹配它們。如果沒有'+',它們仍然匹配,但是引擎匹配一個...然後退出'()'塊...然後在'()'塊中重新開始,首先評估'\ p {L}'等等。正則表達式適合你嗎? – zx81

+0

那麼我會測試這個,讓你知道。 – vermaraj