PHP RegEx排除

时间:2012-09-14 09:55:28

标签: php regex regex-negation

我需要编写与字符串匹配的正则表达式:

  • LOREM,存有,45,56
  • lorem123,ipsum56743,dolor34,78,86
  • LOREM-123,ipsum5678,dolor654,12,45,90
  • 1230-LOREM,234-ips546um-234,12,56,78

但与字符串不匹配:

  • 123-456-ABC20089
  • 12-4-ABC123456

我的正则表达式不起作用,因为它与最后一个字符串匹配:

([a-z0-9,\-]*)

如何排除?

3 个答案:

答案 0 :(得分:1)

使用以下作为正则表达式(与违规字符串匹配):

\d+\-\d+\-[a-zA-Z0-9]+

然后在您的PHP代码中,您要检查匹配的相反内容:

<?php
$subject = "123-456-ABC20089";
$pattern = '/\d+\-\d+\-[a-zA-Z0-9]+/';
if(!preg_match($pattern, $subject)
{
    // it doesn't match
}
else
{
    // it does match, move along
}
?>

答案 1 :(得分:0)

with ^,这是reg exes的否定运算符。 但在这里你只想否定“,”

(^[,]*)

答案 2 :(得分:0)

([a-z0-9\-]+,)+[a-z0-9\-]+

匹配两个或多个“单词”,以逗号分隔。这就是你要找的东西吗?