前往顾页
以后地位: 主页 > 收集编程 > Jsp实例教程 >

Javascript正则表达式条记

时候:2012-02-11 18:27来源:知行网www.zhixing123.cn 编辑:麦田守望者

择要:

. [^\n\r] 肆意字符(非换行和回车以外的肆意字符)
\d [0-9] 数字
\D [^0-9] 非数字
\s [\t\n\x0B\f\r] 空缺字符
\w [a-zA-z_0-9] 所有字母,数字,下划线
\W [^a-zA-Z_0-9] 非单词字符

? 呈现零次或一次
* 呈现零次或多次(肆意次)
+ 起码呈现一次
{n} 呈现n次
{n,m} 呈现n-m次
{n,} 起码n次

贪婪 惰性 摆设(IE,FF,Opera不支撑)
从多到少婚配 从少到多婚配 团体只建设一次
? ?? ?+
* *? *+
+ +? ++
{n} {n}? {n}+
{n,m} {n,m}? {n,m}+
{n,} {n,}? {n,}+

^ 行开首
$ 行末端
\b 单词的鸿沟
\B 非单词的鸿沟
 

问题一:\w \d \s 不成用。
之前利用: var reg = new RegExp("\w"); 一向有效
处理体例:
1)在Javascript若利用new语法例改成\\w \\d \\s等,如: var reg = new RegExp("\\w");
2) 利用 var reg=/\w/; 则可一般婚配

问题二:若何利用摆设形式?有些表达式可能只想团体婚配一次,但摆设形式年夜部分浏览器不支撑,可能在表达式首尾加上行的肇端婚配^和$便可如:
var reg=/^\w$/; 只婚配有一个字母的字符串

问题三:在婚配日期时,需求加一些逻辑,如便可利用:1998-1-1 也可利用1998-01-01,是以需求利用逻辑或分组,如果月份有两位则第一次必是0-1之间的数字,但如许婚配出的成果会不一般,改进体例:
1)利用括号对或分组进行限定
2)利用全局搜刮 /g
如:

2:日期婚配(稍复杂)2 | Regex: /^[12]\d{3}-([1-9]|([01]\d))-([1-9]|([0-3]\d))$/
2983-01-12 true 2983-01-12,01,01,12,12
1983-13-12 true 1983-13-12,13,13,12,12
1983-001-12 false null

1:日期婚配(稍复杂)1 | Regex: /^[12]\d{3}-([1-9]|([01]\d))-([1-9]|([0-3]\d))$/g
0109-12-01 false null
1983-1-1 true 1983-1-1
2983-01-12 true 2983-01-12


测试用例:
 

<div>
<textarea id="txtResult" name="S2" style="height: 248px; width: 100%; font-size: 16px;"></textarea>
</div>
<script type="text/javascript">
window.alert = function(msg, isLine) {
if (!windows.index) windows.index = 0;
if (!isLine) index++;
var d = document.getElementByIdx("txtResult");
d.value += index + ":" + msg + "\r\n\r\n";
};
Array.prototype.toMatch = function(reg, title) {
var result = "";
if (title) result = title + " | ";
result += " Regex: " + reg.toString();
for (var i = 0; i < this.length; i++) {
result += "\r\n" + this[i] + " " + reg.test(this[i]) +" " +this[i].match(reg); //reEmail.test(reEmail[i]);
}
alert(result);
};
</script>

<script type="text/javascript">
//9:Rexgex math email test
var testId = ["4108"];

var testDate = ["01","12","12-30","0109-12-01", "1983-1-1", "2983-01-12", "1983-13-12", "1983-001-12", "1982-1-12", "2138-38-12", "02-3-18"];
testDate.toMatch(/^[12]\d{3}-([1-9]|([01]\d))-([1-9]|([0-3]\d))$/g, "日期婚配(稍复杂)1");

var testDate = ["01", "12", "12-30", "0109-12-01", "1983-1-1", "2983-01-12", "1983-13-12", "1983-001-12", "1982-1-12", "2138-38-12", "02-3-18"];
testDate.toMatch(/^[12]\d{3}-([1-9]|([01]\d))-([1-9]|([0-3]\d))$/, "日期婚配(稍复杂)2");

var testDate = ["0109-12-01", "1982-1-12", "01982-1-12", "2138-38-12", "02-3-18"];
testDate.toMatch(/^[12]\d{3}-\d{1,2}-\d{1,2}$/, "日期婚配");

var testInteger = ["+893", "0123","382","2.3", "-012", "-12", "8933d"];
testInteger.toMatch(/^\+?[1-9][0-9]*$/, "正整数婚配");

var testEmail = ["a", "$", "abc@.cn", "abc@cn.", ".cbd@cn", "cbd.@cn", "abc", "abc123", "@a", "@b", "a@b", "a.sina@c.lcod", "a.sina@c.lc..od", "c2u@live.cn", "@c2u@live.cn", "c2u@live.cn.", ".c2u@live.cn", "newghost@sina.com.cn"];
testEmail.toMatch(/^\w+(\w|.)+\w@\w+.\w(\w|.)+\w$/gi, "邮箱Email婚配");
</script>


输入成果:
1:日期婚配(稍复杂)1 | Regex: /^[12]\d{3}-([1-9]|([01]\d))-([1-9]|([0-3]\d))$/g
01 false null
12 false null
12-30 false null
0109-12-01 false null
1983-1-1 true 1983-1-1
2983-01-12 true 2983-01-12
1983-13-12 true 1983-13-12
1983-001-12 false null
1982-1-12 true 1982-1-12
2138-38-12 false null
02-3-18 false null

2:日期婚配(稍复杂)2 | Regex: /^[12]\d{3}-([1-9]|([01]\d))-([1-9]|([0-3]\d))$/
01 false null
12 false null
12-30 false null
0109-12-01 false null
1983-1-1 true 1983-1-1,1,,1,
2983-01-12 true 2983-01-12,01,01,12,12
1983-13-12 true 1983-13-12,13,13,12,12
1983-001-12 false null
1982-1-12 true 1982-1-12,1,,12,12
2138-38-12 false null
02-3-18 false null

3:日期婚配 | Regex: /^[12]\d{3}-\d{1,2}-\d{1,2}$/
0109-12-01 false null
1982-1-12 true 1982-1-12
01982-1-12 false null
2138-38-12 true 2138-38-12
02-3-18 false null

4:正整数婚配 | Regex: /^\+?[1-9][0-9]*$/
+893 true +893
0123 false null
382 true 382
2.3 false null
-012 false null
-12 false null
8933d false null

5:邮箱Email婚配 | Regex: /^\w+(\w|.)+\w@\w+.\w(\w|.)+\w$/gi
a false null
$ false null
abc@.cn false null
abc@cn. false null
.cbd@cn false null
cbd.@cn false null
abc false null
abc123 false null
@a false null
@b false null
a@b false null
a.sina@c.lcod true a.sina@c.lcod
a.sina@c.lc..od true a.sina@c.lc..od
c2u@live.cn true c2u@live.cn
@c2u@live.cn false null
c2u@live.cn. false null
.c2u@live.cn false null
newghost@sina.com.cn true newghost@sina.com.cn
 

顶一下
(1)
100%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):javasript javasript实例教程 javasript根本教程 javasript源代码 javasript技能
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣