gpt4 book ai didi

javascript - 递归模式js

转载 作者:行者123 更新时间:2023-11-29 10:02:54 24 4
gpt4 key购买 nike

我想检查验证三个规则的递归文本。

1º:所有字符串应该是0-31之间的数字序列+一个点。

示例:1.23.5.12

2º:字符串不能以点开头或结尾。像这样。 .1.23.5.12.

3º 你最多可以写 51 位数字(遵循前面的规则)

我试图为我的 js 函数创建一个模式。但这不起作用。

这是我的功能:

  var str = document.getElementById("numero").value;
var patt1 = /^[0-9]+\./g;
var result = str.match(patt1);
document.getElementById("demo").innerHTML = result;

模式有什么问题?

最佳答案

你可以使用

/^(?!(?:\D*\d){52})(?:[12]?\d|3[01])(?:\.(?:[12]?\d|3[01]))*$/

查看 regex demo

详情

  • ^ - 字符串的开始
  • (?!(?:\D*\d){52}) - 如果有 52 个或更多数字与任何 0+ 个非数字分隔,则失败
  • (?:[12]?\d|3[01]) - 12(可选)后跟任何一个数字或 3 后跟 01 (0 - 31)<
  • (?:\.(?:[12]?\d|3[01]))* - 零次或多次连续重复
    • \. - 点
    • (?:[12]?\d|3[01]) - 见上文(0 - 31)
  • $ - 字符串结尾。

将它与测试一起使用:

if (/^(?!(?:\D*\d){52})(?:[12]?\d|3[01])(?:\.(?:[12]?\d|3[01]))*$/.test(str)) {
// Valid!
}

测试:

var rx = /^(?!(?:\D*\d){52})(?:[12]?\d|3[01])(?:\.(?:[12]?\d|3[01]))*$/;
var strs = [".12", "123", "1.23.5.12", "12345678"];
for (var s of strs) {
console.log(s, "=>", rx.test(s));
}

关于javascript - 递归模式js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51464071/

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