2013-01-11 50 views
0

一個非常快速的問題。正則表達式正則表達式 - 字符範圍,字邊界,斷言

這裏是表達:

/[a-zA-Z]{1,}/ 

我想這個表達式匹配只有那些字母。但它似乎也匹配「=」(等號)。難道我做錯了什麼?

例如:

/\B#{1}(__){1}(F|OB){1}_{1}([a-zA-Z]{1,})={1}\B/ 

這應該匹配:#__OB_someText= 問題是,它也能夠匹配這個:#__OB_someText==或本#__OB_someText====2 等號應該只出現一次。

我可能不太瞭解這些斷言:\b \B

+0

你的正則表達式沒問題 - 你在運行什麼? – foundry

+0

嗯.. M42當然是正確的。你的正則表達式將返回正確匹配的部分,如果你(抓住它),但你實際上想要它_fail_ if =沒有字邊界後面...... – foundry

+0

...或者你打算在開始和\ b,字邊界,並且結束? – foundry

回答

1

\B代表非單詞邊界,也沒有非單詞邊界這個表達式==使用之間

代替:

/\B#(__)(F|OB)_([a-zA-Z]+)=[^=]/ 

{1}可以省略

{1,}是與+

[^=]表示任何不是的字符=

+0

{1}可以省略 - 是的。 {1,}與+相同 - 我更喜歡這個{1,}。 [^ =]表示任何不是的字符= - 謝謝^^ – VolosBlur

+0

@VolosBlur:不客氣。 – Toto