如何检查正则表达式中的以下行?
[albums album_id ='41']
除album_id
之外,所有内容都是静态的。这可能是41
或其他。
在我的代码下面,我尝试了但是那个不起作用:
$str = "[albums album_id='41']";
$regex = '/^[albums album_id=\'[0-9]\']$/';
if (preg_match($regex, $str)) {
echo $str . " is a valid album ID.";
} else {
echo $str . " is an invalid ablum ID. Please try again.";
}
谢谢
答案 0 :(得分:4)
您需要转义第一个[
并将+
量词添加到[0-9]
。未转义的第一个[
创建了一个字符类 - [albums album_id=\'[0-9]
,这是您没想到的。
使用
$regex = '/^\[albums album_id=\'[0-9]+\']$/';
模式详情:
^
- 字符串开头\[
- 文字[
albums album_id=\'
- 文字字符串albums album_id='
[0-9]+
- 一个或多个数字(感谢+
量词,如果此处没有数字,请使用*
量词)\']
- 文字字符串']
$
- 字符串结束。请参阅PHP demo:
$str = "[albums album_id='41']";
$regex = '/^\[albums album_id=\'[0-9]+\']$/';
if (preg_match($regex, $str)) {
echo $str . " is a valid album ID.";
} else {
echo $str . " is an invalid ablum ID. Please try again.";
}
// => [albums album_id='41'] is a valid album ID.
答案 1 :(得分:2)
您的正则表达式代码中有错误,请使用:
$regex = '/^[albums album_id=\'[0-9]+\']$/'
[0-9]之后的+是告诉您需要在0到9之间有一个或多个数字(如果你想要零或更多,你可以放*)
要在代码中使用正则表达式之前对其进行测试,您可以使用此网站regex101