[英]javascript Regex to allow number and only one space after first three digits
[英]Regex in JavaScript which allow maximum 10 digits, only one underscore in between the digits and prevent entering underscore after the first 5 digits
我正在寻找可用于屏蔽输入字段值的正则表达式。 条件如下
只允许数字和下划线
只允许一个下划线
最多允许 10 位数字
防止在前 6 位数字后输入下划线。
在前 5 位数字之后(如果没有添加下划线)应该会自动显示一个下划线
下划线后的数字不应超过 5 位。
/^\\d*\\_?(?:\\d{1,5})?$/
上面的表达式可以解决条件 1 和 2。
几个例子:
12345_67890 - Valid
123456_7890 - Not valid
12345_678901 - Not valid
1234A -Not valid
12345 - Valid
12_45_56 - Not Valid
12_45 - Valid
_12 - Valid
12_ - Valid
-678901 - Not valid
您可以使用此正则表达式:
^(?=(?:_?\d_?){1,10}$)\d{0,5}_?\d{0,5}$
正则表达式详情:
^
: 开始(?=(?:_?\\d_?){1,10}$)
:正向预测允许 1 到 10 位数字\\d{0,5}
: 匹配 0 到 5 位数字_?\\d{0,5}
: 匹配可选的下划线后跟 0 到 5 位数字$
: 结束
- 在前 5 位数字之后(如果没有添加下划线)应该会自动显示一个下划线
基于编辑的问题。 如果您想在 5 位数字后插入一个_
如果它丢失,则使用上面的正则表达式进行match
然后使用下一个进行replace
:
var repl = str.replace(/^(\d{5})(\d*)$/, '$1_$2')
试试这个。
^(?<=\d{0,5})\d{0,5}_?\d{0,5}(?=\d{0,5})$
这是这个正则表达式的工作原理。
\\d{0,5}_?\\d{0,5}
这符合所需的条件。 总共 10 位数字,其中 5 位后不能出现_
。 所以我们走了。 我们检查在_
之前和之后是否最多出现 5 个数字。
(?<=\\d{0,5})
正前瞻算子。 检查_
之前是否最多有 5 个数字或至少没有数字。
(?=\\d{0,5})
这是正向后视运算符。 这会检查_
后面至少没有或最多 5 位数字。
^ ... $
这匹配从行首到行尾的整个字符串。
要了解有关环视运算符如何在正则表达式中工作的更多信息,请单击此处。
您可以在此处查看工作正则表达式。
笔记:
关于你的问题的第 5 点,没有单一的方法可以做你想做的事。 例如,如果您有一个输入框,并且您正在onChange
事件上动态检查输入,并希望在前 5 个输入数字后插入_
,则取决于您使用的框架(React/Angular/Vue),可以是实现这一目标的不同方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.