gpt4 book ai didi

javascript - 在不超过 n 位数的 JavaScript 字符串中使用正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:45 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式验证 jquery 中的用户名,规则如下

  • 字符串必须以字母开头

  • 字符串可以在任意位置包含 0(m) 到 4(n) 位数字或不超过 4(n)

  • 字符串的大小必须在 6(p) 和 20(q) 之间

跟随应该失败

  • 1djgWWq(以数字开头)

  • wwwhg(长度小于6)

  • ky12yu781(4位以上)

以下应该通过

  • 平板电脑

  • table10

  • tab7le10

我尝试使用正则表达式,这很好,除了它不匹配字符串中任何地方的 4 位数字

^(?=^[A-Za-z]+[A-Za-z0-9_-]{5,20}$)(?=^(?:(?!\d{4}).)*$).*$

Sample regex101

注:m,n,p,q整型变量

EDIT 1

Sebastian Proske> 是字母数字和 _ -我想尝试使用不同的正则表达式为每个字段验证表单中的字段,因此每个提交的正则表达式,我想坚持使用一个正则表达式以获得更清晰的代码。波纹管是未经测试的示例代码,可让您了解我正在尝试做什么。Sebastian Proske 的回答对我的工作来说是最好的。谢谢大家。

Sample 1<input id="ds1" type="text" class="validate" data-validate='{"regex":"^[a-z0-9]{4,7}$"}' /><br/>
Sample 2...
Sample 3...
Active Sample <input id="as" type="text" class="validate" data-validate='{"regex":"^(?=^[A-Za-z]+[A-Za-z0-9_-]{5,20}$)(?=^(?:(?!\d{4}).)*$).*$"}' /><br/>
<input id="f1SubmitBtn" type="button" value="Test" onclick="f1Submit();" /><br/>
<script>
function f1Submit() {
$('.validate').each(function() {
if (!$(this).data('validate').regex.test(this.value)) {
console.log(this.value + " No!");
}
});
</script>

最佳答案

根据您原来的正则表达式,我假设 _- 也是允许的字符。您可以使用正则表达式 /^(?!(?:\D*\d){5})[a-z][\w-]{5,19}$/i 测试您的姓名。

小故障:

  • ^ 是字符串开头的 anchor
  • (?!(?:\D*\d){5}) 是对是否存在 5 位数字的否定前瞻检查(这将导致匹配失败)
  • [a-z] 第一个字符必须是字母
  • [\w-]{5,19} 长度在 6 到 20 之间,允许单词字符([a-zA-Z0-9_])和减号
  • $ 是字符串结尾的 anchor
  • i 是不区分大小写的修饰符

参见 Regex101

关于javascript - 在不超过 n 位数的 JavaScript 字符串中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241689/

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