谁能帮我写一个正则表达式,我将用它来验证必须符合以下标准的javascript中的字段(代表一个digicode)?
- 需要有 4 到 6 个数字(0 到 9)
- 需要在开头或结尾有 1 *(星号)或 1 #(锐角)
所以以下工作:
- 1234*
- *12345
- 56789#
- #456789
以下不起作用:
- 1234
- 1*234
- *1234*
- *1234#
- 1234*#
- abcde
非常感谢!!
谁能帮我写一个正则表达式,我将用它来验证必须符合以下标准的javascript中的字段(代表一个digicode)?
所以以下工作:
以下不起作用:
非常感谢!!
^(?:[*#]\d{4,6}|\d{4,6}[*#])$
你可能想阅读一些关于正则表达式的基础知识:每个程序员都应该知道的关于正则表达式的知识(我自己的博客文章)我在这里使用的所有内容都在这里介绍。
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));
不知道这是否可以更优化。在 node.js 中测试:
var x = new RegExp(/^[*#]\d{4,6}$|^\d{4,6}[*#]$/);
这应该适合你;
var expression = /^([*#]?\d{4,6}|\d{4,6}[*#]?)$/;
并且匹配必须至少在 * 或 # 上的地方,即不仅仅是 1234
var expression = /^([*#]\d{4,6}|\d{4,6}[*#])$/;