[英]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
表示a
和z
之間a
每個字符。 要匹配-
字符本身,請將其放在最后。 ( [19-]
匹配1
,a 9
或a -
; [1-9]
匹配1
到9
之間的每個字符,並且不匹配-
)。
+
告訴它匹配之前的一個或多個東西。 您可以替換+
與*
,這意味着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.