gpt4 book ai didi

jquery - 使正则表达式中的括号可选

转载 作者:行者123 更新时间:2023-12-01 05:30:22 25 4
gpt4 key购买 nike

我尝试使用 jQuery 验证器中的正则表达式来验证文本输入以匹配模式,该验证器接受数字和子数字的数量示例:1,2,3(a),4(b),5

我想让括号可选:

$.validator.addMethod("regx", function(value, element, regexpr) { 

return this.optional(element) || /^^\d\((.)\)+(,\d\((.)\)+)*$/i.test(value);
}, "Please enter valid numbers separated by a ', '");

最佳答案

我建议从 block 构建您需要的正则表达式,以获得更好的可读性和可维护性:

$.validator.addMethod("regx", function(value, element, regexpr) { 
var digits = "\\d+"; // 1 or more digits...
var digits_parens = digits + "(?:\\([^()]+\\))?"; // followed with an optional parenthetical substring having no ( and ) inside
var rx = "^" + digits_parens + "(?:,\\s*" + digits_parens + ")*$"; // Final pattern
return this.optional(element) || RegExp(rx).test(value);
}, "Please enter valid numbers separated by a ', '");

生成的模式将如下所示:

^\d+(?:\([^()]+\))?(?:,\s*\d+(?:\([^()]+\))?)*$

请参阅regex demo

地点:

  • ^ - 字符串的开头
  • \d+(?:\([^()]+\))? - 1+ 个数字后跟 1 或 0 个括号
  • (?:,\s*\d+(?:\([^()]+\))?)* - 之后的上述子模式的 0+ 个序列, 后跟 0 个以上空格 (\s*)
  • $ - 字符串结尾。

请注意,无需使用 /i 修饰符,因为模式内没有可以不区分大小写地使用的字母。

关于jquery - 使正则表达式中的括号可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com