***正则表达式regular expression详述(一)
1.使用方法
var reg=/(abc)/;
var a=document.getElementById("a").value;
alert(reg.test(a));
alert(reg.exec(a)[3]);
alert(reg.exec(a));
2.构造器
new RegExp("ab+c", "i")
g: global match(全局匹配) //不会在第一次匹配之后停止,对于String.replace方法如果没有加g怎只会替换一个
i: ignore case(忽略大小写)
gi:
注意:
当使用构造函数的时候,要用转义字符
例如,下面的两条语句是等价的:
re = new RegExp("\\w+")
re = /\w+/
3.特殊字符的完整列表:
*:0-多
+:1-多
?:0-1
\b:匹配边界上的单词比如:/\babc/ 匹配 abcabcabc的第一个abc
\B:匹配非边界上的单词:/\Babc/匹配abcabcabc的第二个abc
\d:数字
\s:空格,tab等
\w:数字,字母下划线,相当于[A-Za-z0-9]
4. 例子:
例1、
<SCRIPT LANGUAGE="JavaScript1.2">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re,"$2, $1"); //$1, ..., $9属性 用圆括号括着的匹配子串,如果有的话。
document.write(newstr)
</SCRIPT>
显示结果:"Smith, John".
例2、
<SCRIPT LANGUAGE="JavaScript1.2">
function getInfo(abc)
{
re = /(\w+)\s(\d+)/;
re.exec(abc.value);
window.alert(RegExp.$1 + ", your age is " + RegExp.$2);
}
</SCRIPT>
请输入你的姓和年龄,输入完后按回车键。
<FORM><INPUT TYPE="TEXT" NAME="NameAge" onChange="getInfo(this);"></FORM>
</HTML>
3:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,')"
4.
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,')
5.
用正则表达式限制只能输入数字和英文:<input type="text" onkeyup="value=value.replace(/[\W]/g,') />
6.
var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
7.
采用正则表达式,来去除两边的空格,只需以下代码
function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
8.! 移动手机号的校验
如果采用传统的校验方式至少就要完成下面三步的校验,
(1).是否是数字
(2).是否是11位
(3).数字的第三位是否是5,6,7,8,9
如果采用正则表达式校验,只需以下代码
function checkMobile1(form)
{
if (form.mobile.value > "")
{
var reg=/13[5,6,7,8,9]\d{8}/;
if ( form.mobile.value.match(reg)== null)
{
alert("请输入正确的移动手机号码!");
form.mobile.focus(); return false;
}
}
return true;
}
*验证邮箱的正则表达式
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
1.使用方法
var reg=/(abc)/;
var a=document.getElementById("a").value;
alert(reg.test(a));
alert(reg.exec(a)[3]);
alert(reg.exec(a));
2.构造器
new RegExp("ab+c", "i")
g: global match(全局匹配) //不会在第一次匹配之后停止,对于String.replace方法如果没有加g怎只会替换一个
i: ignore case(忽略大小写)
gi:
注意:
当使用构造函数的时候,要用转义字符
例如,下面的两条语句是等价的:
re = new RegExp("\\w+")
re = /\w+/
3.特殊字符的完整列表:
*:0-多
+:1-多
?:0-1
\b:匹配边界上的单词比如:/\babc/ 匹配 abcabcabc的第一个abc
\B:匹配非边界上的单词:/\Babc/匹配abcabcabc的第二个abc
\d:数字
\s:空格,tab等
\w:数字,字母下划线,相当于[A-Za-z0-9]
4. 例子:
例1、
<SCRIPT LANGUAGE="JavaScript1.2">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re,"$2, $1"); //$1, ..., $9属性 用圆括号括着的匹配子串,如果有的话。
document.write(newstr)
</SCRIPT>
显示结果:"Smith, John".
例2、
<SCRIPT LANGUAGE="JavaScript1.2">
function getInfo(abc)
{
re = /(\w+)\s(\d+)/;
re.exec(abc.value);
window.alert(RegExp.$1 + ", your age is " + RegExp.$2);
}
</SCRIPT>
请输入你的姓和年龄,输入完后按回车键。
<FORM><INPUT TYPE="TEXT" NAME="NameAge" onChange="getInfo(this);"></FORM>
</HTML>
3:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,')"
4.
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,')
5.
用正则表达式限制只能输入数字和英文:<input type="text" onkeyup="value=value.replace(/[\W]/g,') />
6.
var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
7.
采用正则表达式,来去除两边的空格,只需以下代码
function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
8.! 移动手机号的校验
如果采用传统的校验方式至少就要完成下面三步的校验,
(1).是否是数字
(2).是否是11位
(3).数字的第三位是否是5,6,7,8,9
如果采用正则表达式校验,只需以下代码
function checkMobile1(form)
{
if (form.mobile.value > "")
{
var reg=/13[5,6,7,8,9]\d{8}/;
if ( form.mobile.value.match(reg)== null)
{
alert("请输入正确的移动手机号码!");
form.mobile.focus(); return false;
}
}
return true;
}
*验证邮箱的正则表达式
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/