Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将正则表达式转换为php中许多字符串之一_Php_Regex - Fatal编程技术网

将正则表达式转换为php中许多字符串之一

将正则表达式转换为php中许多字符串之一,php,regex,Php,Regex,我对正则表达式是完全陌生的,我想匹配值是否为以下任一值 cs,ch,es,ee,it,我 到目前为止,我一直在努力 if (preg_match("/^[cs|ch|es|ee|it|me]{2}$/",$val)) echo "true"; else echo "false"; 对于真实情况,它可以正常工作,但对于相反的情况,如sc、hc等,它也会返回true。 此外,如果您参考一些好的源代码/书籍来学习PHP,这将非常有用。您必须使用分组分隔符(括号)。字符类分隔符(方括号

我对正则表达式是完全陌生的,我想匹配值是否为以下任一值

cs,ch,es,ee,it,我

到目前为止,我一直在努力

if (preg_match("/^[cs|ch|es|ee|it|me]{2}$/",$val))
    echo "true";
else
    echo "false";
对于真实情况,它可以正常工作,但对于相反的情况,如
sc、hc
等,它也会返回true。
此外,如果您参考一些好的源代码/书籍来学习PHP,这将非常有用。

您必须使用分组分隔符(括号)。字符类分隔符(方括号)用于匹配字符范围

/^(cs|ch|es|ee|it|me)$/
如果只使用正则表达式匹配某些内容(而不捕获任何内容),则可以使用
(?:)
分组

/^(?:cs|ch|es|ee|it|me)$/

学习正则表达式的一个更好的网站是。

从正则表达式中删除字符类
[]
,并使用
()
包装它们。同时删除
{2}
,因为它不再需要了

if (preg_match("/^(cs|ch|es|ee|it|me)$/",$val))
这就可以了。

您需要使用
()
而不是
[]

/^(cs|ch|es|ee|it|me)$/
注意:使用括号时不要使用
{2}

因此,您的最终代码是:

if (preg_match("/^(cs|ch|es|ee|it|me)$/",$val))
    echo "true";
else
    echo "false";

要学习php的正则表达式,我建议这本书是一本很好的快速参考书,或者更多的参考问题。

你知道[]是做什么的吗

让我们举一个例子[abcdef]

它将匹配方括号中提到的任何字母,假设您提供:
^[cs | ch | es | ee | it | me]{2}$

它将匹配列表中的单个字符
cs | heitm
你可以在任意时间添加一个字母,但只能匹配一次

因此,它将匹配
两个字母的任何单词,如您所述,以字母
cs|heitm

因此,它将匹配cs
hs
|s

希望您能理解:)

更正的正则表达式应为

/^(cs|ch|es|ee|it|me)$/
这将匹配精确的文字,而不是字母