正则表达式:数字和少数特殊字符

时间:2013-12-11 14:56:14

标签: javascript regex

我被埋在RegExp地狱中,无法找到出路,请帮助我。

我需要RegExp只匹配数字(至少1个数字)和其中一个字符:<,>,=(恰好其中一个)。

我的注册表达式如下所示:

^[0-9]+$|^[=<>]{1}$

当我的字符串包含一个或多个数字以及我定义的1个特殊字符时,我认为它应该匹配。但它没有正确行事。我认为我的字符串定义的开始/结束可能有问题,但我不确定。

应该通过的示例包括:

  • <1
  • =2
  • 22>
  • >1
  • =00123456789

不应通过此注册的示例。 EXP:

  • <<2
  • ==222
  • <>=2

6 个答案:

答案 0 :(得分:2)

  

我认为当我的字符串包含一个或多个数字和正好1个特殊字符时,它应该匹配

不,原始模式匹配的字符串包含一个或多个数字 正好是1个特殊字符。例如,它会匹配123=,但不匹配 123=

尝试这种模式:

^\d+[=<>]$

这将匹配由一个或多个数字组成的数字,后跟一个特殊字符。例如,这将匹配123=,但不是 123=

如果您希望特殊字符出现在数字之前,请使用这样的模式:

^[=<>]\d+$

这将匹配=123,但不是 123=


<强>更新

根据您提供的示例,您似乎希望匹配任何包含一个或多个数字的字符串以及在开头结尾处的一个特殊字符。在这种情况下使用这种模式:

^([=<>]\d+|\d+[=<>])$

这将匹配<1=222>>1,但不是 123或{{1} }。

答案 1 :(得分:1)

只需使用[0-9]+[=<>]

即可

以下是你的正则表达式和这一个的可视化器:

答案 2 :(得分:1)

你的正则表达式说:

1个或更多数字或1个符号

此外,^和$表示整个字符串,不包含。如果你想要一个包含,请删除它们。我不知道你是否在数字和符号之间留有空格,所以放入条件空间:

[0-9]+\s?[=<>]{1}

答案 3 :(得分:1)

这应该有用。

^[0-9]+[=<>]$

一个或多个数字后跟“=&lt;&gt;”。

答案 4 :(得分:1)

试试这个正则表达式:

^\d+[=<>]$

描述

Regular expression visualization

答案 5 :(得分:0)

这一个:

/^\d+[<>=]$|^[<>=]\d+$/