我有这个正则表达式:
preg_match("/(comment|vid|nice)/i", $id)
我希望vid
部分与video
或ivideo
匹配。
在vid
中添加星号的正确方法是什么,以便与这些条款匹配?
答案 0 :(得分:1)
您可以使用\p{L}*
\p{L}
匹配任何大写和小写字母,*
是匹配零次或多次的量词:
(comment|\p{L}*vid\p{L}*|nice)
请参阅regex demo和PHP demo:
$re = '/(comment|\p{L}*vid\p{L}*|nice)/';
$s = "new ivideo";
if (preg_match($re, $s, $m)) {
echo $m[0];
}
答案 1 :(得分:0)
当然有很多选择,但想到的是
preg_match("/(comment|[\w-]*vid[\w-]*|nice)/i", $id)
,而
\w
匹配A-Z
,a-z
,0-9
和_
-
只匹配-
[...]
是一个字符类,因此它匹配1.和2。*
表示匹配0次或更多次顺便说一句,你只需使用像http://www.regextester.com这样的在线测试人员就可以摆弄比赛。
答案 2 :(得分:0)
我愿意
preg_match("/(comment|i?vid|nice)/i", $id)
?
使前面的i
可选。
Regex 101演示:https://regex101.com/r/tK2iK2/1
PHP演示:https://eval.in/494456
if(preg_match("/(comment|i?vid|nice)/i", 'video-player-5681ad0a08875')) {
echo 'It is a match';
} else {
echo 'It is not a match';
}