在 preg_match 中允许斜线和 æ,ø,å

问题描述 投票:0回答:4

正如标题所说,我只需要在 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){
 }

提前致谢。

php preg-match
4个回答
3
投票

这些字符可以正常使用,以便使用斜杠(

/
)。您需要使用反斜杠 (
\
) 转义它们。像这样:

preg_match("%^[-a-zA-Z æøå\/]+$%");

另请注意,您可以使用任何字符作为分隔符,使用不太可能出现在模式本身中的字符可能是明智的(在本例中,我选择了

%
)。


1
投票

将 æøå 放入正则表达式中以匹配这些字符。要匹配斜杠,只需用一个反斜杠将其转义即可。


0
投票
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
在第一个示例中,
æ
被视为两个符号,并且每个符号都是匹配的


0
投票

不明白为什么他们不按标准输入所有字母(不仅仅是 A-Z)

例如。 [A-Za-z\s.\ŠšÐŽžÀÁÁÊÆÇÈÉÊËÌÍÎÏÑŃÒÓÔÕÖØÙÚÛÜÝÞÞàáâãäåæçèèéêêëìíîïðñńòóôõöøùúûüýýþÿsăîââşşĂÎâ ??-]

为所有其他内容创建一个“快捷方式”,这样我们就不必一直重写它们..

© www.soinside.com 2019 - 2024. All rights reserved.