2017-02-10 56 views
1

我不明白爲什麼會這種模式爲什麼這個正則表達式與該輸入匹配(PCRE)?

^[A-Za-z0-9\.,-\?]+$ 

將匹配輸入,如下:

should-match 
should-match-2.no.problem.cool.with.me. 
however:this->should;not;match=yet=it=does. 

畢竟,> : ; =不包括在該模式。

Debuggex Demo

+2

沒有深入研究 - 在你的角色課中有一個可疑的未經轉義的減去。 –

+0

@SebastianProske你是對的! –

+0

逃避'-',讓你擁有'^ [A-Za-z0-9 \。,\ - \?] + $',你不需要在字符類中轉義'?'或'.'現在你有'^ [A-Za-z0-9。,\ - ?] + $' – dawg

回答

0

是的,他們是。當您在[]模式中使用-時,您的意思是從左側的字符到右側的字符。所以,-?實際上意味着從ASCII字符,變爲ASCII字符?,其包括其間的所有字符。這包括您發佈的內容。

你可以把-[]組的結束,然後它代表本身,而不是意字符的範圍,也可以逃避它,通過預先在它前面一個\字符,如\-

相關問題