正则表达式数字超出范围

时间:2017-04-18 16:43:39

标签: regex pcre

我正在寻找特定范围之外的数字的正则表达式。

NOT接受的号码是v10,v11,v12,v13,v14,v15。我的正则表达式是v(1[0-5])但是 我想要除了那6个数字以外的任何数字。

v1 - accepted. Need regex for this
v5 - accepted. Need regex for this
v100 - accepted. Need regex for this
v51 - accepted. Need regex for this
v10...v15 - not accepted. I already have a regex for this.

1 个答案:

答案 0 :(得分:1)

使用锚点或边界使匹配更严格。

<?php
ini_set('display_errors', 1);
date_default_timezone_set("GMT");//setting time to GMT timezone
for($x=0;$x<50;$x++)
{
    echo "<option value=\"$x\">".date("i:s",$x*15)."</option>";
}

\bv(1[0-5])\b

演示:https://regex101.com/r/TPkTom/1/

锚点/边界需要完全匹配。没有这些,只有表达式的一部分必须匹配。

根据更新,否定前瞻将起作用:

^v(1[0-5])$

演示:https://regex101.com/r/TPkTom/4/

或者您可以使用PCRE动词:

v(?!1[0-5]\b)\d+

https://regex101.com/r/TPkTom/3/