正如标题所说,我只需要在 preg_match 中允许一个普通的斜杠即可。我认为这是类似/或类似的东西。但这是行不通的。
我还需要允许欧洲字母:æ、ø、å。这是怎么做到的?
有人可以告诉我这个吗? :-)
示例
if(preg_match("/^[a-zA-Z -]+$/", $_POST["last_name"]) == 0)
{
$errMsg = "Dit efternavn må kun indeholde bogstaver, mellemrum og bindestreg.<br>";
}
然后我正在做一个
if(count($errMsg)==0){
}
提前致谢。
这些字符可以正常使用,以便使用斜杠(
/
)。您需要使用反斜杠 (\
) 转义它们。像这样:
preg_match("%^[-a-zA-Z æøå\/]+$%");
另请注意,您可以使用任何字符作为分隔符,使用不太可能出现在模式本身中的字符可能是明智的(在本例中,我选择了
%
)。
将 æøå 放入正则表达式中以匹配这些字符。要匹配斜杠,只需用一个反斜杠将其转义即可。
if(preg_match("/^[a-zA-Z -\/æøå]+$/u", $_POST["last_name"]) == 0)
if(preg_match("~^[a-zA-Z -/æøå]+$~u", $_POST["last_name"]) == 0)
u
修饰符适用于 UTF-8
修饰符
您需要转义斜杠或将分隔符更改为任何其他即
~
,如第二个示例中所示
u修饰符很重要
示例:
$str=ord(166);
if(preg_match('~[æ]~',$str)){
print 'without';
}
if(preg_match('~[æ]~u',$str)){
print 'with';
}
仅打印
without
在第一个示例中,æ
被视为两个符号,并且每个符号都是匹配的
不明白为什么他们不按标准输入所有字母(不仅仅是 A-Z)
例如。 [A-Za-z\s.\ŠšÐŽžÀÁÁÊÆÇÈÉÊËÌÍÎÏÑŃÒÓÔÕÖØÙÚÛÜÝÞÞàáâãäåæçèèéêêëìíîïðñńòóôõöøùúûüýýþÿsăîââşşĂÎâ ??-]
为所有其他内容创建一个“快捷方式”,这样我们就不必一直重写它们..