我的正则表达式不起作用+/- 99,99

时间:2013-12-04 12:06:24

标签: php regex

我试过写一个正则表达式,只允许这个值: +或 - 首先是char然后是2位数,然后是逗号(,),然后是2位数。 这是我的正则表达式:

^(+/-)[0-9]{2}[,][0-9]{2}

也许有人可以帮我修复我的正则表达式或告诉我什么是假的。

由于

此致

3 个答案:

答案 0 :(得分:4)

$pattern = "/^[+-][0-9]{2},[0-9]{2}$/";
preg_match($pattern, "-99,99");     // returns 1
preg_match($pattern, "-99,99test"); // returns 0
preg_match($pattern, "+10,20");     // returns 1
preg_match($pattern, "99,99");      // returns 0
preg_match($pattern, "+00,99");     // returns 1
preg_match($pattern, "-9999");      // returns 0

答案 1 :(得分:1)

正则表达式的问题在于如何引用加号或减号,以及您没有定义字符串的结尾。你应该使用这样的东西:

^[+-][0-9]{2},[0-9]{2}$

请注意,不同之处在于我将这两个字符放在方括号内。这将创建一个只包含一个字符或另一个字符的字符类。我还在末尾添加了$字符来表示字符串的结尾。

您使用的是普通括号 - 这是一个捕获组,以便提取匹配的文本。如果我理解你的问题,你不是要提取任何文本 - 只是为了符合某个条件。

我还从逗号符号中删除了方括号 - 我们只需要匹配那一个字符,这样你就可以放一个文字逗号字符。

答案 2 :(得分:1)

试试这个表达

preg_match("/^(\+|-)[0-9]{2}[,][0-9]{2}$/","+99,09");