正则表达式匹配数字码(数字,星形和尖锐)

时间:2012-05-24 10:21:33

标签: javascript regex

有没有人可以帮我写一个正则表达式,我将用它来验证javascript中必须符合以下标准的字段(代表数字代码)?

  • 需要有4到6个数字(0到9)
  • 需要在开头或结尾都有1 *(星号)或1#(尖锐)

以下是有效的:

  • 1234 *
  • * 12345
  • 56789#
  • #456789

以下不起作用:

  • 1234
  • 1 * 234
  • * 1234 *
  • * 1234#
  • 1234 *#
  • ABCDE

非常感谢!!

4 个答案:

答案 0 :(得分:2)

^(?:[*#]\d{4,6}|\d{4,6}[*#])$

here on Regexr

您可能想要阅读一些关于正则表达式的基础知识:What absolutely every Programmer should know about regular expressions(我自己的博客文章)我在这里使用的所有内容都包含在那里。

答案 1 :(得分:2)

var s,
    rg1=/^[*#]\d{4,6}$/,
    rg2=/^\d{4,6}[*#]$/;

s="1234*"; console.info(rg1.test(s)||rg2.test(s));
s="*12345"; console.info(rg1.test(s)||rg2.test(s));
s="56789#"; console.info(rg1.test(s)||rg2.test(s));
s="#456789"; console.info(rg1.test(s)||rg2.test(s));

s="1234"; console.info(rg1.test(s)||rg2.test(s));
s="1*234"; console.info(rg1.test(s)||rg2.test(s));
s="*1234*"; console.info(rg1.test(s)||rg2.test(s));
s="*1234#"; console.info(rg1.test(s)||rg2.test(s));
s="1234*#"; console.info(rg1.test(s)||rg2.test(s));
s="abcde"; console.info(rg1.test(s)||rg2.test(s));

答案 2 :(得分:1)

不知道这是否更合理。 在node.js中测试:

var x = new RegExp(/^[*#]\d{4,6}$|^\d{4,6}[*#]$/);

答案 3 :(得分:1)

这对你有用;

var expression = /^([*#]?\d{4,6}|\d{4,6}[*#]?)$/;

匹配的地方总是必须至少在*或#即不仅仅是1234

var expression = /^([*#]\d{4,6}|\d{4,6}[*#])$/;