簡體   English   中英

PHP正則表達式[僅接受選定的字符]

[英]PHP Regular Expression [accept selected characters only]

我想接受一個字符列表作為用戶的輸入並拒絕其余的。 我可以接受格式化的字符串或查找是否缺少字符/字符串。 但是我如何只接受一組角色而拒絕所有其他角色。 我想用preg_match來做這件事。

例如,允許的字符是:a..z,A..Z, - ,''用戶必須能夠以任何順序輸入這些字符。 但是他們不得允許使用除這些角色以外的其他角色。

使用否定的字符類:[^ A-Za-z- \\ w]

只有當用戶輸入的內容不是該字符類中的內容時,才會匹配。

if (preg_match('/[^A-Za-z-\w]/', $input)) { /* invalid charcter entered */ }

[A-ZA-Z- \\ W]

[]括號用於對字符進行分組,其行為類似於單個字符。 所以你也可以做[...] +等等的東西也是az,AZ,0-9定義范圍所以你不必寫整個字母表

您可以使用以下正則表達式: ^[a-zA-Z -]+$

^匹配字符串的開頭,這阻止它匹配字符串123abc的中間。 $類似地匹配字符串的結尾,防止它匹配abc123的中間。
括號與其中的每個字符相匹配; az表示az之間a每個字符。 要匹配-字符本身,請將其放在最后。 [19-]匹配1 ,a 9或a - ; [1-9]匹配19之間的每個字符,並且不匹配- )。
+告訴它匹配之前的一個或多個東西。 您可以替換+* ,這意味着0或更多,如果你也想匹配一個空字符串。

有關更多信息,請參閱此處

你會看到一個否定的^字符類[] ,它規定了你允許的字符,然后測試匹配。

$pattern = '/[^A-Za-z\- ]/';
if (preg_match($pattern, $string_of_input)){
   //return a fail
}

//Matt beat me too it...

暫無
暫無

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

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