我想接受来自用户的字符列表作为输入,并拒绝其余的。我可以接受格式化的字符串或查找是否缺少字符/字符串。 但是,我怎样才能接受只有一套字符,而拒绝所有其他字符。我想用preg_match来做到这一点。PHP正则表达式[只接受选定的字符]
例如允许的字符有:a..z,A..Z, - ,'' 用户必须能够以任何顺序输入这些字符。但是他们绝不允许使用除这些角色以外的其他角色。
我想接受来自用户的字符列表作为输入,并拒绝其余的。我可以接受格式化的字符串或查找是否缺少字符/字符串。 但是,我怎样才能接受只有一套字符,而拒绝所有其他字符。我想用preg_match来做到这一点。PHP正则表达式[只接受选定的字符]
例如允许的字符有:a..z,A..Z, - ,'' 用户必须能够以任何顺序输入这些字符。但是他们绝不允许使用除这些角色以外的其他角色。
使用否定的字符类:[^ A-ZA-Z- \ W]
这如果用户输入的东西比什么是在该字符类中的其他将只匹配。
if (preg_match('/[^A-Za-z-\w]/', $input)) { /* invalid charcter entered */ }
您可以使用以下正则表达式: ^[a-zA-Z -]+$
。
^
匹配字符串的开头,从而防止匹配字符串123abc
的中间。 $
类似地匹配字符串的结尾,防止它匹配abc123
的中间。
括号与它们内部的每个字符匹配; a-z
表示在a
和z
之间的每个字符。为了匹配-
角色本身,将其放在最后。 ([19-]
匹配1
,9
或-
; [1-9]
匹配1
和9
之间的每个字符,并且不匹配-
)。
+
告诉它匹配之前的一个或多个事物。如果你想要匹配一个空字符串,你可以用*
代替+
,这意味着0或更多。
欲了解更多信息,请参阅here。
,你会寻求在否定^
字符类[]
,规定你允许的字符,然后测试比赛。
$pattern = '/[^A-Za-z\- ]/';
if (preg_match($pattern, $string_of_input)){
//return a fail
}
//Matt beat me too it...
谢谢。请您解释\ w – Sadi 2009-11-22 15:35:19
这是标准的单词字符。我使用它有点冗余。如果我没有弄错,我相信它匹配[A-Za-z0-9_](所有字母,数字和下划线)。 – Matt 2009-11-22 15:38:58
@Matt 是的,就是这样。 :) 谢谢 – Sadi 2009-11-22 15:54:50