preg_match包含 - (连字符)的特定模式在 PHP 中


preg_match specific pattern containing - (hyphen) in php

我想preg_match一个看起来像这样的字符串(如下所示),我尝试了其他方法,但它们适用于特定的字符串而不是两者

firstname

first-name

除此之外,拒绝另一个字符串

尝试这样做,但无法做到,我发现,这只能使用 Regex,而且由于我对正则表达式一无所知,我无法在一分钟左右的时间内完成并运行易受攻击的代码,我们是否有任何其他方法可以做到这一点,如果不是正则表达式

怎么样:

preg_match('/^'w+-?'w+$/', $string);
您可以将

0 或 1 个连字符与?符号匹配:

if( preg_match('/^first-?name$/', $yourString ) ){
    // matched.
}

^$符号是开始和结束标记,添加这些标记以确保字符串准确无误。

转到 https://www.regex101.com/

尝试 (first['-]{0,1}name)

工作正常:-)

PHP代码 :

$pattern = '(first['-]{0,1}name)';
echo preg_match($pattern,'firstname');
echo preg_match($pattern,'first-name');

输出:11 - 表示真 - 真