【发布时间】:2012-12-12 16:10:53
【问题描述】:
$foo = "username122";
pre_match('Contain only aplhanumeric string', $foo){
return true;
}
$foo 仅包含字母数字而非特殊字符 (=\*-[( 等)
【问题讨论】:
-
添加标签是为了实际标记问题,还是只是想引起注意?
标签: php javascript regex
$foo = "username122";
pre_match('Contain only aplhanumeric string', $foo){
return true;
}
$foo 仅包含字母数字而非特殊字符 (=\*-[( 等)
【问题讨论】:
标签: php javascript regex
ctype_alnum() 函数会帮你花花公子:)
【讨论】:
使用正则表达式仅从头到尾匹配字母数字字符:
/^[A-Za-z0-9]*$/
例如:
$testRegex = "/^[A-Za-z0-9]*$/";
$testString = "abc123";
if (preg_match($testRegex, $testString)) {
// yes, the string is entirely alphanumeric
} else {
// no, the string is not entirely alphanumeric
}
【讨论】:
$testString = @"abc123"; - 为什么是@?
@ 不包括这项任务。 ;)
if(preg_match('~[^a-z0-9 ]~i', $foo)) {
//DO SOMETHING HERE;
}
【讨论】:
这样的正则表达式不会在 PHP 和 JavaScript 之间改变。在 JavaScript 中它是一个对象,而在 PHP 中它是一个字符串,但模式还是一样的:
/^[a-z0-9]+$/i
其中^ 表示字符串的开头,$ 表示字符串的结尾。接下来,a-z 匹配任何字母,0-9 匹配任何数字。 + 声明之前的模式可以重复一次或多次。 i 修饰符使a-z 部分不区分大小写,因此大小写匹配。
在 JavaScript 中测试:
/^[a-z0-9]+$/i.test("Foo123"); // true
在 PHP 中测试:
preg_match("/^[a-z0-9]+$/i", "Foo123"); // 1
使用 PHP,您可以选择使用 POSIX 字符类,例如 :alnum:。请注意,这在 JavaScript 中不起作用:
preg_match("/^[[:alnum:]]+$/i", "Foo123"); // 1
实际上有一个更简单的 PHP 测试方法,使用 Ctype functions,特别是 ctype_alnum 函数,它将返回一个布尔值,说明给定字符串中的所有字符是否都是字母数字:
ctype_alnum("Foo123"); // true
ctype_alnum("Foo!23"); // false
【讨论】:
username123? 的值将失败。 \" 会在 JavaScript 和 PHP 中引发问题,除非你的 `` 被进一步转义。