我想接受一个字符列表作为用户的输入并拒绝其余的。我可以接受格式化的字符串或查找是否缺少字符/字符串。但是我如何只接受一组字符而拒绝所有其他字符。我想使用 preg_match 来做到这一点。
例如,允许的字符有:a..z、A..Z、-、'' 用户必须能够以任何顺序输入这些字符。但他们绝不能使用那些字符以外的字符。
我想接受一个字符列表作为用户的输入并拒绝其余的。我可以接受格式化的字符串或查找是否缺少字符/字符串。但是我如何只接受一组字符而拒绝所有其他字符。我想使用 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
.
括号匹配其中的每个字符;表示和a-z
之间的每个字符。为了匹配字符本身,把它放在最后。(匹配 a 、 a或 a ;匹配and之间的每个字符,但不匹配)。告诉它匹配它之前的一个或多个事物
。您可以将 替换为a
z
-
[19-]
1
9
-
[1-9]
1
9
-
+
+
*
,这意味着 0 或更多,如果您还想匹配一个空字符串。
有关详细信息,请参阅此处。
您将查看规定您允许的字符的否定^
字符类[]
,然后测试匹配项。
$pattern = '/[^A-Za-z\- ]/';
if (preg_match($pattern, $string_of_input)){
//return a fail
}
//Matt beat me too it...