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

时间:2015-01-28 00:13:00

标签: php regex preg-match

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

firstname

first-name

除此之外,拒绝其他字符串

我试过这样做,但无法做到,而且我发现,它只能用正则表达式,因为我对正则表达式一无所知,所以我不能在一分钟左右做到这一点并运行一个易受攻击的代码,如果不是正则表达式,我们还有其他方法可以做到吗

3 个答案:

答案 0 :(得分:1)

您可以将0或1个连字符与?符号匹配:

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

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

答案 1 :(得分:1)

怎么样:

preg_match('/^\w+-?\w+$/', $string);

答案 2 :(得分:0)

转到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 - 这意味着真实 -