正则表达式也允许斜线" /"与现有的正则表达式

时间:2017-10-26 20:37:15

标签: javascript regex

我很难允许斜线" /"使用现有的正则表达式

下面是一个允许点和数字的现有正则表达式:

val.match(/^[0-9]+(\.[0-9]{1,2})?$/)

我将其更改为...

val.match(/^[0-9]+([./][0-9\/]{1,2})?$/)

但是这个人不会允许像1.5 / 384这样的数字,其中点/周期和斜线同时。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

这应该做你想要的:

^(\d+(?:\.\d{1,2})?\/?(?:\d+\.\d{1,2})?)$

请参阅此Regex101.com

修改:更正了它与11.5

不匹配的事实

答案 1 :(得分:1)

您可以在主模式部分后面添加一个可选的非捕获组,以匹配1或0次出现/后跟1位或多位数字:

/^\d+(?:\.\d{1,2})?(?:\/\d+)?$/
                   ^^^^^^^^^^

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • \d+ - 一位或多位
  • (?:\.\d{1,2})? - .的可选序列,然后是1或2位数字
  • (?:\/\d+)? - /然后1+位数
  • 的可选序列
  • $ - 字符串结束。

如果/之后的数字可以浮动的格式与第一个数字相同:

/^\d+(?:\.\d{1,2})?(?:\/\d+(?:\.\d{1,2})?)?$/
  ^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^