首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript使用Regex对特定数字的位置限制

Javascript使用Regex对特定数字的位置限制
EN

Stack Overflow用户
提问于 2022-11-11 13:47:28
回答 3查看 29关注 0票数 0

我对输入类型编号进行了一些客户端验证,

  • 将接受任何带有小数点2位的0到99数字
  • 小数的值必须是.00,.25,.33,.5,.67,.75。

我尝试过使用2位长度验证,但如何使用regex验证特定的十进制数字列表?

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

有效案例

5.25

78.5

99.75

无效案例

88.12

50.78

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-11-11 13:50:19

您可以将模式写成:

代码语言:javascript
复制
^\d{1,2}\.(?:00|[72]5|33|67|50?)$

解释

  • 字符串的^开始
  • \d{1,2}匹配1或2位数字
  • \.匹配一个点
  • 替代方案的(?:非捕获组
    • 00|[72]5|33|67|50? match 00 75 25 33 67 550

  • )关闭非捕获组
  • 字符串的$末端

Regex演示

票数 0
EN

Stack Overflow用户

发布于 2022-11-11 13:50:45

对于各种允许的十进制结尾,我会使用替换:

代码语言:javascript
复制
^\d{1,2}\.(?:00|25|33|5|67|75)$
票数 0
EN

Stack Overflow用户

发布于 2022-11-11 22:26:16

我不清楚你是否允许前导零。如果不是,这里有一个解决方案:

代码语言:javascript
复制
const regex = /^(?:\d|[1-9]\d)\.(?:00|25|33|5|67|75)$/;
[
  '0.33',
  '5.25',
  '78.5',
  '99.75',
  '09.75',
  '88.12',
  '50.78'
].forEach(str => {
  console.log(str + ' => ' + regex.test(str));
});

输出:

代码语言:javascript
复制
0.33 => true
5.25 => true
78.5 => true
99.75 => true
09.75 => false
88.12 => false
50.78 => false

对regex的解释:

  • ^ --字符串开始处的锚
  • (?:\d|[1-9]\d) --非捕获组:一位数字,或者两位数字10.99
  • \. -文字点
  • (?:00|25|33|5|67|75) --非捕获组:允许小数的局部or
  • $ -字符串末端的锚
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74403459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档