【问题标题】:Javascript Regex to match numbers 1 to 11 onlyJavascript Regex 仅匹配数字 1 到 11
【发布时间】:2016-05-23 13:46:17
【问题描述】:

我需要在 Javascript(不是 JQUERY)中创建一个正则表达式。

正则表达式只能匹配从 1 到 11 的数字。

我从这个正则表达式开始允许数字 1 到 11,但它也允许 21、31、41、51 等。我只需要数字 1 到 11。谢谢。

var range = /([0-9][0-1]{1,2})/g;

澄清:我需要使用正则表达式进行表单验证。我正在使用 HTML 属性“min/max”,但我正在使用的平台仍然提交表单,所以我需要在提交到服务器之前在客户端捕获它。

【问题讨论】:

  • 试试^(1[01]|[1-9])$
  • 为什么要使用正则表达式?
  • 有句老话,开发者有问题,他虽然会用正则表达式解决。现在他有两个问题
  • n => n>=1 && n<=11 是最好的正则表达式

标签: javascript regex validation


【解决方案1】:

这是正则表达式,假设文本只能包含这个数字,不能包含其他内容:/^([1-9]|1[01])$/

你可以玩这个here

解释:

  • /^...$/ 确保它从头到尾匹配。所以12 不会仅仅因为起始1 而匹配。
  • 替代(...|...) 允许两种数字:
    • [1-9] 允许从 1 到 9 的一位数字。
    • 1[01] 允许两位数以 1 开头,然后是 0 或 1。

【讨论】:

  • 不过,您不能完全移除锚点。这将匹配任何数字,例如111。您至少需要检查单词边界 - /\b([1-9]|1[01])\b/
【解决方案2】:

我把这完全复杂化了。我需要做的就是检查它是否为整数,如果不是则抛出错误,然后检查 int 11.

感谢您的所有建议。

【讨论】:

    猜你喜欢
    • 2018-03-28
    • 2014-07-17
    • 2018-09-08
    • 2019-02-13
    • 2023-02-13
    • 2019-09-23
    • 2010-09-10
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多