需要Regex只允许4个数字和一个字母
Need Regex allowing only 4 digits and one alphabet
字符串的最大长度为5(包括一个字母)。如果没有字母,允许的数字长度为4。
允许数字:0
~ 9999
允许使用一个字母(仅当string至少包含一个数字时)。一些例子:
-
允许:
1a
a2
,1111a
,1a22
,9999
-
不允许:
99999
,11111
,a
,aa
我试着:
^(?:[0-9]|[a-z](?=[^a-z]*$)){1,5}$
适用于1a
, a2
, 1111a
, 1a22
, 9999
。但它也错误地允许99999
。关于如何限制数字长度有什么帮助吗?
^(?:(?='d*[a-z]'d*$)(?=.*[0-9])(?:[a-z0-9]){1,5}|[0-9]{1,4})$
试试这个。看到演示。
https://regex101.com/r/fX3oF6/10正如您所发现的,regex不擅长记录事物。在这种情况下,提前查看将使您正确:
^'d{1,4}$|^(?='d*[a-z]'d*$)[a-z'd]{1,5}$
我们首先使用^'d{1,4}$
来获得最简单的情况。如果失败了,第二种选择,第二种选择接管。它做的第一件事是使用(?='d*[a-z]'d*$)
来断言字符串中只有一个字母。如果预知成功,匹配位置返回到字符串的开头,允许我们再次匹配整个字符串,这次使用[a-z'd]{1,5}$
。
此时实际上没有必要验证其余字符是否为数字。我可以用(?=[^a-z]*[a-z][a-z]*$
代替。我们只需要确保它查看整个字符串。我只是觉得'd*
更能自我记录。
注意这个正则表达式将匹配一个只包含一个字母的字符串。如果你想确保至少有一个数字,把最后的{1,5}
改为{2,5}
。
这是演示
使用{size}
来限制正则表达式中字符串的长度。
我更新正则表达式:
^(?:(?=.*[a-z])(?:[0-9]|[a-z]){1,5}|[0-9]{4})$
相关文章:
- Regex代码只允许一个空格
- 制作一个regex来验证只有一个数字的字符串
- Regex或javascript每X个连续单词中有一个单词
- 为什么JS RegEx提取多个值(只有一个匹配)
- 为什么regex只验证字段中的一个字符,而不是所有输入的字符
- Regex:使用javascript测试最后一个单词后的url中是否存在最后一个斜杠
- regex在JavaScript中拆分一个html字符串
- Regex-我需要在第一个数字后面拆分一个字符串
- 打印regex之后的最后一个字符
- Regex,它搜索一个起始字符,介于两者之间的任何字符,然后是一个结束字符
- JavaScript Regex添加了一个仅用于正斜杠的规则
- 来自另一个域的Regex
- 最后一个斜杠 JavaScript RegEx 之后的所有字符
- JS-regex,我怎样才能把它变成一个 replace() 方法
- 在 JavaScript 中使用 RegEx 从字符串中删除子字符串的一个出现
- Javascript RegEx 正好是一个数字模式
- Javascript:每100个区块文本运行一个Regex匹配函数
- 如何在Javascript中创建一个RegEx来验证输入框
- 在Javascript中,我需要一个RegEx来删除具有多个外观的两个文本(范围)之间的字符串中的文本
- 编写一个Regex,接受除某些单词以外的字母数字字符串