正则表达式,用于检查字符串是否至少包含拉丁字母,并且还可以按任意顺序包含数字

此正则表达式要求字符串的末尾包含数字,但是也可以使用诸如“ aabbccd1bbb3bb”,“ vvvddhh3”,“ 12kkk”之类的字符串

(?=(?:.*[a-z]){1,24})(?:.*\d){0,22}
nange1988 回答:正则表达式,用于检查字符串是否至少包含拉丁字母,并且还可以按任意顺序包含数字

“要求”(例如“字符串应至少包含...”)被写为正则表达式语言中的起始超前断言,例如

^(?=.*[a-z])

读取“字符串的开头,后跟任何内容,再加上一个拉丁字母”。正则表达式的正文可以简单地为[a-z0-9],因为您可以接受字母和数字的任意顺序。

将它们放在一起,

re = /^(?=.*[a-z])[a-z0-9]+$/

test = [
  'aaa','aaa33bb','2019','#*$)','',]

for (t of test)
  console.log(t,re.test(t))

如果要限制整个字符串的长度,请用+替换{1,nn}

,

您可以执行此操作而无需创建复杂的正则表达式模式。创建两个小模式以删除您不想检查的字符。例如,该片段包含一个正则表达式[^a-z]+以匹配所有非小写字母的字符。然后,我们使用此模式从字符串中删除那些字符,然后我们可以计算剩余的字符数。这告诉我们aabbccd1bbb3bb有12个字母字符。可以为数字\D+创建相同的内容。然后,您可以在下面添加验证逻辑,以确保其满足其他约束条件(例如1

与复杂的正则表达式相比,这更易于理解,并且易于修改。

strings = [
  "aabbccd1bbb3bb","vvvddhh3","12kkk","abcdefghijklmnopqrstuvwx12345678901234567890123",// too many digits
  "abcdefghijklmnopqrstuvwxy1234567890123456789012",// too many alpha
  "abcdefghijklmnopqrstuvwx1234567890123456789012"   // just right
]

r1 = /[^a-z]+/g
r2 = /\D+/g

for (s of strings) {
  a = d = s
  n_alpha = a.replace(r1,'').length
  n_digit = d.replace(r2,'').length
  console.log(`alpha: ${n_alpha}; digit: ${n_digit}`)
  // add your logic here
  // e.g.
  // if (n_alpha >= 1 &&  n_alpha <= 24) ...
}


另外,要检查字符串是否以数字结尾,只需对照\d$进行检查。

本文链接:https://www.f2er.com/3156790.html

大家都在问