我想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
- 表示真 - 真