javascript 正则表达式基本使用
2017-10-09 00:00
417 查看
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。
当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
含义:[]整体表示一位字符,满足内部的任何一个字符即可
2.反向类 ---- 在字符类的[]内最开始位置书写^,表示反向类
含义:反向类的作用,可以匹配除[]内部字符以外的其他字符
3.范围内 ---- [a-n]表示可以匹配字符a到字符n间的任意字符
含义:范围类是对字符串功能的扩展,可以使用一个范围表示多种字符
4.组合类 ---- 对范围类的扩展
5.预定义类 ---- 内部预先准备好的一些匹配方式
6.或者 ---- ‘|’某一个或者另一个
含义:/a|b|c|d|e/ 选区a、b、c、d、e之间的任意一个兼可
7.边界标识 ---- 在正则的最开始位置书写^ 表示以什么开头; 在正则最后位置书写 $ 表示以什么结尾;
8 使用自定义量词 ---- 可以减少对正则内部重复部分的书写
9 使用预定义量词:正则规则中预先定义好的规则
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m 执行多行匹配。
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
replace() 方法用于字符串替换
search() 方法用于查找
提取操作 match()
exec
exec() 方法用于检索字符串中的正则表达式的匹配。
使用用一个正则同时匹配多次同一个字符串,操作会进行累计。
组提取:在正则中()不仅可以像以前一样使用,还可以进行分组,分组后的内容会被exec提取出来;
但是如果某一个组的内容并不需要提取,可以在这个括号的开始位置,书写?:
exec()如何未匹配到合适的项,返回为null
搜索模式可用于文本搜索和文本替换。
什么是正则表达式?
正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
语法:
``` 方式一: 字面量方式 /正则表达式主体/修饰符(可选); 方法二: 构造函数声明方式 var reg = new RegExp("abc"); 或者 var reg = new RegExp(/abc/); ```
常见用法:
1.字符类 ---- 在正则内部使用[]标识含义:[]整体表示一位字符,满足内部的任何一个字符即可
var reg=/[abc]/ //可以匹配abc任意一个字符的字符串 案例:console.log(reg.test("ljalubigcliu")); //true console.log(reg.test("ljkluigliu")); //false
2.反向类 ---- 在字符类的[]内最开始位置书写^,表示反向类
含义:反向类的作用,可以匹配除[]内部字符以外的其他字符
var reg = /[^abc]/; //可以匹配到除abc以外的其他字符 案例:console.log(reg.test("abcabcabcd")); //true console.log(reg.test("aaaaaaaa"));//false
3.范围内 ---- [a-n]表示可以匹配字符a到字符n间的任意字符
含义:范围类是对字符串功能的扩展,可以使用一个范围表示多种字符
ar reg = /[a-n]/; //表示a-n之间的所有小写字符 案例:console.log(reg.test("uuuuuauuuuuu")); //true console.log(reg.test("uuuuuopqrstuuuuuu")); //false
4.组合类 ---- 对范围类的扩展
var reg = /[a-z]/; //所有的小写字符 var reg = /[n-y2-7B-W]/; //如果想要同时检测多种范围,可以采用自由组合的方式
5.预定义类 ---- 内部预先准备好的一些匹配方式
\d: 数字字符digit [0-9]; \D:非数字字符 [^0-9]; \w:[a-zA-Z0-9_]的简写,单词字符(所有的字母数字和_); \W:[^a-zA-Z0-9_]的简写,非单词字符 案例: console.log(/\d/.test("kudgwaygdi1awud")); //true console.log(/\d/.test("kudgwaygdiawud")); //false console.log(/\D/.test("1234567890")); //false console.log(/\D/.test("123456A7890")); //false
6.或者 ---- ‘|’某一个或者另一个
含义:/a|b|c|d|e/ 选区a、b、c、d、e之间的任意一个兼可
var reg = /ab|bd|io|we|gh/; console.log(reg.test('abc')); //true
7.边界标识 ---- 在正则的最开始位置书写^ 表示以什么开头; 在正则最后位置书写 $ 表示以什么结尾;
边界标识1:^以什么开头 var reg = /^abc/; //以abc开头 console.log(reg.test("abcnukfguwadaw")); //true console.log(reg.test("hhhabcnukfguwadaw")); //false 边界标识2:$以什么结尾 var reg = /abc$/; //以abc结尾 console.log(reg.test("uubuefeabc")); //true console.log(reg.test("uubuefeabcmli")); //false 特殊用法:如果一个正则中同时使用了^和$,表示严格匹配(必须和内部的内容完全一致) var reg = /^abc$/; console.log(reg.test("abc"));//true console.log(reg.test("abcabc"));//false
8 使用自定义量词 ---- 可以减少对正则内部重复部分的书写
自定义量词: 1 {n} 内部的数值表示前面书写的内容重复多少次 var reg = /^a{5}$/; console.log(reg.test("aaaa"));//false console.log(reg.test("aaaaa"));//true console.log(reg.test("aaaaaa"));//false 2 {n,} 需要出现的次数为至少n次 var reg = /^a{3,}$/; console.log(reg.test("aa")); console.log(reg.test("aaa")); console.log(reg.test("aaaa")); console.log(reg.test("aaaaa")); console.log(reg.test("aaaaaa")); 3 {n,m} 需要出现的次数为n-m次之间 var reg = /^a{3,5}$/; console.log(reg.test("aa")); console.log(reg.test("aaa")); console.log(reg.test("aaaa")); console.log(reg.test("aaaaa")); console.log(reg.test("aaaaaa"));
9 使用预定义量词:正则规则中预先定义好的规则
1 * 表示0次或n次 使用方式(某个要匹配的部分可有可无均正确时,使用*) var reg = /^a*$/; console.log(reg.test("")); console.log(reg.test("a")); console.log(reg.test("aaaaa")); console.log(reg.test("aaaaaaaaaaaaaa")); 2 + 表示1次或n次 使用方式,某个部分至少出现一次,可以使用+ var reg = /^a+$/; console.log(reg.test("")); console.log(reg.test("a")); console.log(reg.test("aa")); console.log(reg.test("aaaaa")); console.log(reg.test("aaaaaaaaaaaaaa")); 3 ? 表示0次或1次 var reg = /^a?$/; console.log(reg.test("")); console.log(reg.test("a")); console.log(reg.test("aa")); console.log(reg.test("aaaaaa")); //注意*所指示的部分,如果需要是整体,可以添加() var reg = /^(abc)*$/; console.log(reg.test("abcabcabc"));//true console.log(reg.test("abcccccccc"));//false
正则表达式修饰符
修饰符 可以在全局搜索中不区分大小写:i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m 执行多行匹配。
常用字符串方法
重用方法以下五个:test()、serach()、 replace()、match()、 exec() 下面一一解释:test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
实例: var patt = /e/; patt.test("The best things in life are free!"); //解析:字符串中含有"e",所以输出true;
replace() 方法用于字符串替换
实例: var str =Microsoft word var txt = str.replace(/microsoft/i,"Runoob"); //使用了 i 忽略大小写 //使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :
search() 方法用于查找
实例: 检索字符串中"studio"的子串 var str="Visit studio"; var n=str.serach("studio"); //解析:结果返回匹配字符串的起始坐标 6
提取操作 match()
提取出内部的邮箱地址: var str="lilei@xxx.gov.com我:好人一生平安,邮箱是wuyou@qq.com"; console.log(str.match(/\w+@\w+(\.\w+)+/g)); //返回的结果是数组:[lilei@xxx.gov.com,wuyou@qq.com];
exec
exec() 方法用于检索字符串中的正则表达式的匹配。
使用用一个正则同时匹配多次同一个字符串,操作会进行累计。
组提取:在正则中()不仅可以像以前一样使用,还可以进行分组,分组后的内容会被exec提取出来;
但是如果某一个组的内容并不需要提取,可以在这个括号的开始位置,书写?:
exec()如何未匹配到合适的项,返回为null
var str = "小明:大神你好,关注你很久,你共享了很多的内容,我都非常喜欢,么么哒,我得邮箱是xiaoming@163.com.cn小红:前两天我老公说想看这个片子,我要今天晚上跟他一起看,我得邮箱是xiaohong@sina.com李雷:不废话,直接六邮箱 lilei@xxx.gov.com我:好人一生平安,邮箱是wuyou@qq.com"; 使用正则.exec(字符串): var reg = /(\w+)@\w+(?:\.\w+)+/g; while(result=reg.exec(str)){ console.log(result); } //结果会输出所有匹配的邮箱
相关文章推荐
- Javascript中正则表达式的使用及基本语法
- javascript正则表达式的语法几基本使用 十五
- [置顶] javascript正则表达式学习笔记之------正则表达式的创建和基本使用
- JavaScript使用正则表达式 (转)
- JavaScript 正则表达式使用详细参数
- 在JavaScript中使用正则表达式
- 使用javascript和正则表达式进行数据验证
- 在javascript中使用正则表达式
- 在Javascript下使用正则表达式的学习笔记
- javascript正则表达式中使用变量关键字
- javascript正则表达式使用详解
- 使用javascript和正则表达式进行数据验证
- 正则表达式使用详解 (php,perl,unix,javascript)
- javascript正则表达式的基本知识
- MySpace.cn 使用的Javascript验证正则表达式
- javascript正则表达式使用详解(2)
- Javascript中正则 表达式的使用
- 【asp】【vbscript】【javascript】使用正则表达式给链接文本加上链接
- 如何使用JavaScript和正则表达式进行数据验证
- 使用javascript和正则表达式进行数据验证