簡體   English   中英

PHP正則表達式模式接受不允許的字符

[英]PHP Regular Expression pattern accepts characters that are not allowed

preg_match('~^[a-zA-Z0-9!@#$%^*()-_+=.]+$~', $string)

這是我在代碼中使用的模式,我要告訴用戶只允許使用這些字符。 但是問題在於它只適用於某些字符,不適用於某些其他字符。 例如,即使我沒有在模式中輸入“ <”和“>”,它也不允許使用“ john&john”之類的字符串,但允許“ test <>”!

模式中的大多數字符對於正則表達式引擎具有特殊含義,必須使用反斜杠轉義:

^[a-zA-Z0-9\!\@\#\$\%\^\*\(\)\-\_\+\=\.]+$ 

https://regex101.com/r/kH7hD8/1

我總是使用https://regex101.com/之類的工具測試我的正則表達式

您必須在正則表達式中轉義一些特殊字符:

^[a-zA-Z0-9!@#\$%\^\*\(\)\-_\+=\.]+$

這將工作:

preg_match('~^[a-zA-Z0-9!@#$%^*()_+=.-]+$~', $string)

問題是在字符類中間充當范圍的轉義連字符的存在。 使用此正則表達式:

preg_match('~^[\w!@#$%^*()+=.-]+$~', $string)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM