我是regex的新手,并试图为客户编写一个模式,将自己的自定义详细信息添加到产品中。这个想法是允许客户最多包含3个字母数字字符和3个句号/句点,例如这些是有效的条目:
abc
ab
a.b.c
a..bc
...
a.b.
etc
虽然这些都是无效的:
abcd (too many characters)
a.... (too many .)
abcd. (too many alphanumeric)
到目前为止,我已经得到了以下内容,但它没有检测到字母和时间。交错:例如。 'A.B.C'
这是我在的地方:
$(document).on('keyup', 'input.custom', function() {
currentText = $(this).val();
reg = /^([a-zA-Z]{0,3})|([.]{0,3})$/igm;
if (currentText.match(reg)) {
console.log('match');
} else {
console.log('no match');
}
});
感觉我很亲密,但遗漏了一些非常重要的东西!
答案 0 :(得分:3)
匹配更有意义:^ [a-zA-Z0-9。] {6} $(如果允许下划线,则范围可以替换为\ w。)
然后计算文本中句点的出现次数,并确保它为3。
答案 1 :(得分:1)
使用如下所示的外观。
^(?!(?:[^.\n]*\.){4,})(?!(?:[^A-Za-z0-9\n]*[A-Za-z0-9]){4,})(?=.*[A-Za-z.0-9]).*$
<强>解释强>
(?!(?:[^.\n]*\.){4,})
断言字符串中不存在4个或更多点。(?!(?:[^A-Za-z0-9\n]*[A-Za-z0-9]){4,})
断言字符串中不存在4个或更多字母数字字符。(?=.*[A-Za-z.0-9])
断言必须存在字母数字或点。