【问题标题】:Using regex to validate in JSP [duplicate]在 JSP 中使用正则表达式进行验证 [重复]
【发布时间】:2014-08-07 15:19:57
【问题描述】:

我有一个输入字段,我想在进一步传递值之前验证它的内容。不过,我正在努力创建一个正确的正则表达式,因为在在线编辑器中创建的正则表达式并不能真正适用于我的代码(实际上它会阻止所有内容)。

所需的正则表达式行为:

只有数字和.,你只能使用一次.作为小数分隔符,值不能以.开始/结束,值不能以0开头。

我的代码:

var valueInput = $(row).find("#value").val();
var numbers = /^[0-9.]*$/;
if( !valueInput.match(numbers) ) {
  //do something                 
}

valueInput 很好,它正确地从输入中获取值。有任何想法吗?

编辑。
感谢您的贡献,我想为未来的人总结一下,寻找答案:

1。正则表达式不是字符串!我编辑了以前的代码,以确保没有人感到困惑,但删除“”的注释至关重要,感谢 Pointy。

2。我决定使用的正则表达式是/^([1-9][0-9]*)+(?:\.\d+)?$/。我意识到我还需要处理大小写,当 value 只有小数部分时,所以它以 0 开头。我真的不想在这里玩正则表达式,所以我做了一个技巧:如果 valueInput 以非零开头,我验证用 ,否则我用/^[0]{1,1}\.\d{1,2}$/g 验证。

【问题讨论】:

  • 你能试试parseFloat(valueInput) !== parseFloat(valueInput)(测试NaN)吗?或者更好的是,使用<input type="number" />,它将自动为您验证。
  • 您创建的正则表达式不正确。外部双引号字符错误;它应该只是/^[0-9]*$/
  • @Pointy 你说得对,谢谢!

标签: javascript regex


【解决方案1】:
/[1-9](\d+)?(\.\d+[1-9])?/

这是我能想到的最好的。如果这不起作用,请告诉我。

附:我发现regexr 是一个测试正则表达式的好地方。干杯。

【讨论】:

  • 它不起作用,因为这个 .5 将是一个有效数字
【解决方案2】:

我会这样做:

valueInput.match(/([1-9]d*)+(?:\.\d+)?$/)

【讨论】:

  • 请说明您的代码的作用以及它如何回答问题。如果您得到一个代码 sn-p 作为答案,您可能不知道如何处理它。答案应该为 OP 和未来的访问者提供有关如何调试和解决问题的指导。指出您的代码背后的想法是什么,对理解问题以及应用或修改您的解决方案有很大帮助。
猜你喜欢
  • 2015-08-20
  • 2017-07-23
  • 1970-01-01
  • 2020-02-18
  • 2018-11-25
  • 1970-01-01
  • 2014-03-03
相关资源
最近更新 更多