2015-10-12 68 views
1

字邊界我有這樣的代碼:正則表達式 - 任何字符

preg_match("/\b$word\b/ui",$string) 

它的正常工作與字母,但變量也可以登錄..像等 怎麼能「@#$ ^%+!」我這樣做會發現這一點呢?

+0

你要正確對待茶爲了確定「文字邊界」的目的,像'「!@#$ ^%+」'這樣的字符串作爲「單詞字符」? – Bohemian

回答

1

字邊界\b等同於:

((?<!\w)(?=\w)|(?<=\w)(?!\w)) 

如果你要正確對待字符[email protected]#$^%+爲「字字符」指定一個「單詞邊界」,修改相應的上述表達的目的:

((?<![\[email protected]#$^%+])(?=[\[email protected]#$^%+])|(?<=[\[email protected]#$^%+])(?![\[email protected]#$^%+])) 

從而給你:

preg_match("/((?<![\[email protected]#$^%+])(?=[\[email protected]#$^%+])|(?<=[\[email protected]#$^%+])(?![\[email protected]#$^%+]))$word((?<![\[email protected]#$^%+])(?=[\[email protected]#$^%+])|(?<=[\[email protected]#$^%+])(?![\[email protected]#$^%+]))/ui",$string) 
+0

謝謝,如果我需要一個空間邊界? – warez

+0

@warez你是什麼意思「空間邊界」?你的意思是「空間與非空間的界限」嗎?如果是這樣,那不會幫助你匹配你的輸入,因爲'$ word'後面緊跟'/ ui' - 斜槓不是空格。 – Bohemian

+0

嗨,我有字符串像 「abc.ds gld + s」 我需要正則表達式,會發現「abc.ds」,「gld + s」 我需要正則表達式將檢查任何字之間的空間 – warez

相關問題