[英]Simple regex to match some characters and exclude others
我需要一個正則表達式的preg_match接受除了所有字母數字字符l
, L
, v
, V
, 0
, 2
。
我試過了
^[a-zA-Z0-9][^lLvV02]*$
除了lLvV02之外,它都可以正常工作,但它也可以接受其他字符,例如SPACE,ù,@,#等。
我該如何更改?
您可以使用
^(?:(?![lLvV02])[a-zA-Z0-9])*$
細節
^
-字符串開頭 (?:
-開始非捕獲組
(?![lLvV02])[a-zA-Z0-9]
-一個不屬於負前瞻性的字符類中的字符之一 )*
-非捕獲組的結尾,重復0個或更多 $
-字符串結尾 參見Regulex圖 :
我知道您要求使用正則表達式,但是您可以先測試字母數字,並且只有在通過后才能檢查其他字符是否存在:
if(ctype_alnum($string) && !preg_match('/[lLvV02]/', $string)) {
//pass
} else {
//fail
}
或者可能替代preg_match('/^[^lLvV02]+$/', $string)
。
最簡單的可能是: ^[a-km-uw-zA-KM-UW-Z13-9]*$
。 我並不是說它很漂亮,但是可以達到預期的效果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.