Php 正则表达式不';行不通
我需要使用php正则表达式匹配以下模式,但它并没有给出预期结果 例:- 需要匹配模式 5555459930Php 正则表达式不';行不通,php,regex,Php,Regex,我需要使用php正则表达式匹配以下模式,但它并没有给出预期结果 例:- 需要匹配模式 5555459930 $id = "4567 3423 4567"; $regex = "/^[1-9]\d{4} \d{4} \d{4}$/"; if (preg_match($regex, $id)) { // Indeed, the expression "^[2-9]\d{2} \d{3} \d{4}$" matches the date string echo "Found a match
$id = "4567 3423 4567";
$regex = "/^[1-9]\d{4} \d{4} \d{4}$/";
if (preg_match($regex, $id)) {
// Indeed, the expression "^[2-9]\d{2} \d{3} \d{4}$" matches the date string
echo "Found a match!";
}else {
// If preg_match() returns false, then the regex does not
// match the string
echo "The regex pattern does not match. :(";
}
如果要匹配:4个非零数字+空格+4个数字+空格+4个数字
^([1-9]){4}\d{4}\d{4}$
如果要匹配,应该执行以下操作:4个非零数字+空格+4个数字+空格+4个数字
^([1-9]){4}\d{4}\d{4}$
应该可以做到这一点我认为修改现有正则表达式最安全的方法是在第一个[2-9]\d{2}\d{3}
中添加一个替代方法:
^(?:[2-9]\d{2} \d{3}|\d{4} \d{4}) \d{4}$
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
见
详情:
-字符串的开头^
-备选方案之一:(?:[2-9]\d{2}\d{3}\d{4}\d{4})
-从[2-9]\d{2}\d{3}
到2
的一个数字,任意2个数字,一个空格和3个数字9
-或|
-4位数字,空格,4位数字(用于新的字符串类型)\d{4}\d{4}
-空格
-4位数字\d{4}
-字符串结束$
我认为修改现有正则表达式最安全的方法是在第一个
[2-9]\d{2}\d{3}
中添加一个替代项:
^(?:[2-9]\d{2} \d{3}|\d{4} \d{4}) \d{4}$
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
见
详情:
-字符串的开头^
-备选方案之一:(?:[2-9]\d{2}\d{3}\d{4}\d{4})
-从[2-9]\d{2}\d{3}
到2
的一个数字,任意2个数字,一个空格和3个数字9
-或|
-4位数字,空格,4位数字(用于新的字符串类型)\d{4}\d{4}
-空格
-4位数字\d{4}
-字符串结束$
对正则表达式的简单编辑将是
^[1-9]\d{3} \d{4} \d{4}
对正则表达式的简单编辑将是
^[1-9]\d{3} \d{4} \d{4}
您在前两个部分中缺少一个数字。请尝试
“/^[2-9]\d{2,3}\d{3,4}\d{4}$/”
或-如果您不想匹配混合输入类型-“/^(?[2-9]\d{2}\d{3}\d{4}\d{4}$/”
有任何反馈吗?实际上,您没有提到是否需要支持这两种字符串格式,或者只是将现有的格式重新转换为不同的模式。它总是指向“正则表达式模式不匹配”。前两个部分的长度较短。请尝试“/^[2-9]\d{2,3}\d{3,4}\d{4}$/”
,或者-如果您不想匹配混合输入类型-“/^(?:[2-9]\d{2}\d{3}|\d{4}\d{4}$/“
有任何反馈吗?您实际上没有提到是否需要支持这两种字符串格式,或者只是将现有的一种重新加载到不同的模式中。它总是转到“regex模式不匹配”它最终对你有用吗?你在这项任务上需要更多的帮助吗?它最终对你有用吗?你在这项任务上需要更多的帮助吗?