今天正式的来学习正则表达式… 对于正则,可能大部分的新手都搞不懂正则表达式,我也一样。
/正则表达式主体/修饰符(可选) var patt = /runoob/i /runoob/i 是一个正则表达式。 runoob 是一个正则表达式主体 (用于检索)。 i 是一个修饰符 (搜索不区分大小写)。1.什么是正则表达式: 用来搜索、匹配一系列符合特定语法规则的字符串的处理工具(一个强大的字符串处理工具)。 用途:进行特定字符或字符串的搜索;替换掉字符串中的指定字符或字符串;验证字符串是否符合需求。
var str = '123a3asd1s2'; //var re = /\d+/g; //提取数字的正则表达式 //var arr = str.match(re); //使用正则的语法 var arr = str.match(/\d+/g); console.log(arr);以上代码提取出了字符串里的数字。 2.正则表达式的书写规则: 1)字面量写法: /abc/ 优点:简洁方便 缺点:不支持变量
var re = /abc/ //类似于数组 var arr = []2)构造函数形式: new RegExp(“abc”); 优点:支持变量 缺点:需要注意字符转义规则
var re2 = new RegExp('abc') //类似于数组 var arr = new Array(1,2,3);3.正则表达式修饰符
修饰符描述i执行对大小写不敏感的匹配。g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。m执行多行匹配。4.正则表达式模式 方括号用于查找某个范围内的字符:
修饰符描述[abc]查找方括号之间的任何字符。[0-9]查找任何从 0 至 9 的数字。(xly)查找任何以l分隔的选项。元字符是拥有特殊含义的字符:
元字符描述\d查找数字。\s查找空白字符。\b匹配单词边界。\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。量词:
量词描述n+匹配任何包含至少一个 n 的字符串。n*匹配任何包含零个或多个 n 的字符串。n?匹配任何包含零个或一个 n 的字符串。4.使用 test() test() 方法是一个正则表达式方法。test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
var patt = /e/; patt.test("The best things in life are free!");字符串中含有 “e”,所以该实例输出为:
true你可以不用设置正则表达式的变量,以上两行代码可以合并为一行:
/e/.test("The best things in life are free!")5.使用 exec() exec() 方法是一个正则表达式方法。exec() 方法用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。 以下实例用于搜索字符串中的字母 “e”:
/e/.exec("The best things in life are free!");字符串中含有 “e”,所以该实例输出为:
e6.使用字符串方法 在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。 search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。 search() 方法使用正则表达式: search() 方法使用字符串 replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 replace() 方法使用正则表达式: replace() 方法使用字符串:
表单验证
/*是否带有小数*/ function isDecimal(strValue ) { var objRegExp= /^\d+\.\d+$/; return objRegExp.test(strValue); } /*校验是否中文名称组成 */ function ischina(str) { var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/ return reg.test(str); /*进行验证*/ } /*校验是否全由8位数字组成 */ function isStudentNo(str) { var reg=/^[0-9]{8}$/; /*定义验证表达式*/ return reg.test(str); /*进行验证*/ } /*校验电话码格式 */ function isTelCode(str) { var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/; return reg.test(str); } /*校验邮件地址是否合法 */ function IsEmail(str) { var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/; return reg.test(str); }