我正在寻找一个正则表达式,将对阵:X_XPHP简单的regex的问题
其中X始终是一个大于零伟大,就必须在这两个数字之间是一个下划线。
谢谢。
编辑:当我运行
$图案= “[1-9] _ [1-9]”; if( preg_match($ pattern,$ key))return TRUE;
我得到警告:
消息:的preg_match() [function.preg匹配]:未知 修改 '_'
我正在寻找一个正则表达式,将对阵:X_XPHP简单的regex的问题
其中X始终是一个大于零伟大,就必须在这两个数字之间是一个下划线。
谢谢。
编辑:当我运行
$图案= “[1-9] _ [1-9]”; if( preg_match($ pattern,$ key))return TRUE;
我得到警告:
消息:的preg_match() [function.preg匹配]:未知 修改 '_'
尝试这种
$pattern = "/[1-9]_[1-9]/";
甲正则表达式串是由正则表达式和改性剂的(如I,M)。由于它们都是单个字符串的一部分,因此它们之间有强制分隔符 - 单个字符,如管道,斜线,分号。既然你可以使用任何符号,你必须声明你将使用哪一个符号。选择是用你的正则表达式字符串的第一个字符声明的。如果是/,则分隔符将为/。如果是|,则分隔符将是|。
所以这是完全等同的(正则表达式“测试”,修改“I”):
preg_match("/test/i");
preg_match("|test|i");
preg_match(":test:i");
,如果您使用的分隔符前面,PHP解释下一个字符作为改性剂。这是发生在你身上的事情(因为你以[,PHP解释]作为分隔符开始并且_作为修饰符)。
你正在寻找的模式是:
$pattern = '/^\d+_\d+$/';
注^和$!省略这些(正如大多数其他答案一样)是一个巨大的错误(因为它允许在匹配的部分之前和之后的任何字符串;如果您忘记^,-20_1也会匹配,因为它有一个有效的子字符串:20_1)。
而且数字应该小于10吗?换句话说,一个数字号码? – 2011-03-19 21:28:02
没有数字可以高得多,也许5位数字。理想情况下,我不想强加限制。 – stef 2011-03-19 21:30:32
在这种情况下,您需要Andrew的解决方案(尽管在分隔符中)。 – 2011-03-19 21:32:33