正则表达式是一种定义字符模式的方法,我们可以拆分,查找或替换字符串中与模式字符匹配的字符。
在javascript之外,正则表达式也是很有用的。
在javascript中,正则表达式是通过RegExp对象使用的,RegExp对象是javascript中的一个内置对象,与String类似。
创建RegExp对象:
可以通过两种方式创建新的RegExp对象。
使用正则表达式字面值:
如
var myregexp=/\b'|'\b/ig;
使用RegExp对象的构造函数RegExp():
var myregexp=new RegExp("\\b'|'\\b","ig");
使用这种方法的一个非常重要的区别是如果使用特殊的正则表达式字符,如\b,这些字符前有一个反斜杠/,在javascript中,反斜杠表示一个转义字符,如果\b表示退格,为了区分\b是字符串中的转义字符,还是正则表达式中的特殊字符,必须在字符前再加一个反斜杠。因此\b就变成\\b。
上述两种指定正则表达式的方法都可行。一般建议用第一种,而使用第二种的原因是它允许在运行其间确定正则表达式。例如,正则表达式需要以用户的输入为基础时,就用第二种方式。
RegExp对象有自己的方法和属性。如test()方法可测试传入的参数字符串是否匹配RegExp对象中定义的模式。
RegExp对象默认仅查找与模式匹配的第一个字符串,这是RegExp对象的一个重要而常见的特性。正则表达式从字符的一端开始查找,当找到第一个匹配字符串时,就停止查找。
RegExp对象的方法:
test()方法:
检测所传入的参数字符串,确定传入的参数是否与定义的RegExp对象正则语法匹配,如果匹配,则返回true,否则返回false。
RegExp对象属性:
- g:全局匹配,查找所有与模式匹配的字符串,而不是在找到第一个匹配的字符串后就停止。
- i:模式不区分大小写,如将A和a都视为相同的字符模式。
var myregexp=/\b'|'\b/gi;
则执行全局查找并忽略大小写。
正则表达式特殊字符:
1,文本,数字和标点符号:
<form action="#" name="form1">
<input type="text" name="txt">
<input type="button" value="测试" name="btn" οnclick="check()" >
</form>
<script>
function reg(txt){
var myreg=/[^a-z\d ]/i;
return !(myreg.test(txt));
}
function check(){
if(reg(document.form1.txt.value)==true){
alert("有效");
}else{
alert("无效")
}
}
</script>
函数接收一个参数,即要检查有效性的文本,设置一个正则表达式并赋值给变量myreg,这就将隐式地创建一个新的RegExp对象。该正则表达式:
a-z匹配从a到z的任意字符。
\d表示匹配任何数字字符,即0到9。
空格
[^]表示要匹配括号外的任意字符。
i表示该模式不区分大小写。
综上,该表达式不匹配空格,a~z,A~Z和0~9之间的字符。
2,重复字符。
{n,m}:前一项至少出现n次,最多出现m次。x{2,4}匹配xx,xxx和xxxx。
3,位置字符:
var mystr="my name's rose! and my old's 50_50 or 30?";
var my=/\b/g;
alert(mystr.replace(my,"|"))