簡體   English   中英

簡單的正則表達式以匹配某些字符並排除其他字符

[英]Simple regex to match some characters and exclude others

我需要一個正則表達式的preg_match接受除了所有字母數字字符lLvV02

我試過了

^[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.

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