javascript正则表达式模式为3个字母数字和3个句号

时间:2014-11-24 11:29:46

标签: javascript jquery regex

我是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');    
   }
 });

感觉我很亲密,但遗漏了一些非常重要的东西!

2 个答案:

答案 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]).*$

DEMO

<强>解释

  • (?!(?:[^.\n]*\.){4,})断言字符串中不存在4个或更多点。
  • (?!(?:[^A-Za-z0-9\n]*[A-Za-z0-9]){4,})断言字符串中不存在4个或更多字母数字字符。
  • (?=.*[A-Za-z.0-9])断言必须存在字母数字或点。
  • 仅在满足上述所有条件时匹配相应的字符串。