我想preg_match
一个看起来像这样的字符串(如下),我已尝试过其他方法,但它们适用于特定字符串而不是两者
firstname
first-name
除此之外,拒绝其他字符串
我试过这样做,但无法做到,而且我发现,它只能用正则表达式,因为我对正则表达式一无所知,所以我不能在一分钟左右做到这一点并运行一个易受攻击的代码,如果不是正则表达式,我们还有其他方法可以做到吗
答案 0 :(得分:1)
您可以将0或1个连字符与?
符号匹配:
if( preg_match('/^first-?name$/', $yourString ) ){
// matched.
}
^
和$
符号是开始和结束标记,添加以确保字符串是准确的。
答案 1 :(得分:1)
怎么样:
preg_match('/^\w+-?\w+$/', $string);
答案 2 :(得分:0)
试
(first[\-]{0,1}name)
工作正常: - )
php代码:
$pattern = '(first[\-]{0,1}name)';
echo preg_match($pattern,'firstname');
echo preg_match($pattern,'first-name');
输出:11
- 这意味着真实 -