正则表达式(regular expression)是一个描述字符模式的对象。ECMAScript 的RegExp 类表示正则表达式,而String和RegExp 都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。正则表达式主要用来验证客户端的输入数据。
用户填写完表单单击按钮之后,表单就会被发送到服务器,在服务器端通常会用PHP、ASP.NET 等服务器脚本对其进行进一步处理。因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。
如:机房收费系统中,注册用户需要输入卡号,卡号必须为数字,这个判断就可以交由JavaScript验证:
var pattern=/^\d+$/; var str='1256'; alert(pattern.test(str));结果:
var pattern=/\d/; var str='12赵寒'; alert(pattern.test(str));结果:
1.new运算符
<span style="font-size:18px;">var box = new RegExp('box');</span>2.字面量
<span style="font-size:18px;">var box = /box/;</span>
RegExp包括两个方法:test()和exec()。
test: 在字符串中测试模式匹配,返回true 或false
exec: 在字符串中执行匹配搜索,返回结果数组
如:
var pattern = new RegExp('box', 'i'); //创建正则模式,i表示不区分大小写 var str = 'This is a Box!'; //创建要比对的字符串 alert(pattern.test(str)); //通过test()方法验证是否匹配:匹配输出true,否则false alert(pattern.exec(str));//通过exec()方法验证是否匹配:匹配输入匹配的字符串,否则null
以replace为例:
<span style="font-size:18px;">var pattern=/zhaohan/ig; var str='My name is zhaohan'; alert(str.replace(pattern,'赵寒'));</span>结果:
/*使用静态属性*/ var pattern = /(g)oogle/; var str = 'This is google!'; pattern.test(str); //执行一下 alert(RegExp.input); //This is google! alert(RegExp.leftContext); //This is alert(RegExp.rightContext); //! alert(RegExp.lastMatch); //google alert(RegExp.lastParen); //g alert(RegExp.multiline); //false
<span style="font-size:18px;">/*使用实例属性*/ var pattern = /google/ig; alert(pattern.global); //true,是否全局了 alert(pattern.ignoreCase); //true,是否忽略大小写 alert(pattern.multiline); //false,是否支持换行 alert(pattern.lastIndex); //0,下次的匹配位置 alert(pattern.source); //google,正则表达式的源字符串 var pattern = /google/g; var str = 'google google google'; pattern.test(str); //google,匹配第一次 alert(pattern.lastIndex); //6,第二次匹配的位</span>
正则表达式元字符是包含特殊含义的字符。它们有一些特殊功能,可以控制匹配模式的方式。反斜杠后的元字符将失去其特殊含义。
在此一类举例,其它元字符见下方附表。
<span style="font-size:18px;">var pattern=/^\d+$/; var str='1256'; alert(pattern.test(str));</span>
最初举的卡号必须为数字的例子,就是利用了元字符:/d。
^在[]数组内,表示非。但在/后出现,表示从第一个字符开始验证。$表示从最后验证。
^、$都有的情况说明:str里的字符必须全部满足pattern。
对于js这块,在开始学之前,我就一直很期待了,因为我莫名的对关于UI设计这块很感兴趣。包括:HTML、CSS...
正则表达式,在学之前,感觉它很高大上,但学完后,就发现:既简单、又实用......我喜欢~~