正则表达式基础与实践
来源:互联网 发布:程序员猝死率多少 编辑:程序博客网 时间:2024/06/06 03:30
正则表达式
基本的正则表达式方法:
- 字面量:/pattern/attribute
- new RegExp(pattern,attribute);
- attribute 常用: /g;/i;/m;全局匹配,不区分大小写,多行匹配?
支持正则表达式的string对象方法
- search:不执行全局匹配,只返回首次出现的位置,如果不匹配返回-1;
str.search(/pattern/i)
- match:查找指定的字符串,根据查找到的个数不同,返回值的形式也不同。
str.match(searchValue)str.match(regexp)ex:匹配一个var str = "hello world";str.match("hello")//[]console.log(str.match("Hello")); // nullconsole.log(str.match(/hello/)); // ["hello", index: 0, input: "hello world"]全局匹配:返回所有满足条件的项目到一个数组var str2="1 plus 2 equal 3"console.log(str2.match(/\d+/g)); //["1", "2", "3"]
- replace()方法:返回替换后的新字符串;
stringObject.replace(regexp/substr,replacement)参数:第一个参数可以是正则表达式或者字符串:第二个参数:一个字符串的值,被替换的文本或者生成替换文本的函数:这里介绍并举例最基础的用法(replace()用法较多)ex:var str = "hello world";// 替换字符串var s1 = str.replace("hello","a");console.log(s1);// a world// 使用正则替换字符串var s2 = str.replace(/hello/,"b");console.log(s2); // b world// 使用正则全局替换 字符串var s3 = str.replace(/l/g,'');console.log(s3); // heo word
### RegExp对象方法
1. test()方法:该方法用于检测一个字符串是否匹配某个模式; 基本语法:RegExpObject.test(str);
var a = "this is lance" var b = /this/ b.test(a)// true var c = new RegExp("this") c.test(a)//true
- exec() 该方法用于检索字符串中的正则表达式的匹配。 基本语法:RegExpObject.exec(string)
var str = "longen and yunxi";console.log(/longen/.exec(str)); // 打印 ["longen", index: 0, input: "longen and yunxi"]// 假如没有找到的话,则返回null
### 正则中[]的含义
匹配其中的任意一个字符;
1. [abc]匹配其中任意一个字符
2. [^abc]匹配不属于其中的任意一个字符。
3. [0-9]0到9中的任意一个数字。
4. [a-z]任意一个小写字母。
5. (red|blue|green);查找小括号中的任意一项,小括号中的 | 是或者的意思
var str = "abcde";
console.log(str.match(/[bcd][bcd]/)); // ["bc", index: 1, input: "abcde"]
### 元字符 ##
需要转义的字符
需要转义的特殊字符前面加上\。 ex:
^:\^;一下字符需要转义:
^*+.[{|
量词
贪婪模式
针对被量词修饰的表达式匹配行为,如果只想匹配一个在表示贪婪模式的字符后面加上?
var str = "longen<p>我是中国人</p>yunxi<p>我是男人</p>boyboy";// 贪婪模式 匹配所有字符console.log(str.match(/<p>.*<\/p>/)[0]); // <p>我是中国人</p>yunxi<p>我是男人</p>// 后面加问号,变成非贪婪模式console.log(str.match(/<p>.*?<\/p>/)[0]); // <p>我是中国人</p>
正则表达式实战
1. 以数字结尾var a = /\d+$/;var b= 'name2';a.test(b);2.去掉空格a = "lance is cool";b = /\s/g;a.replace(b,'');"lanceiscool"3.判断字符串是不是由数字组成var a = '123abb3'var b = /^[0-9]*$/b.test(a)4.电话号码正则var a = '028-86727548';var b = /[0-9]{3,4}-\d{7,8}/;b.test(a)5. 手机号码正则var a = '1389058581';var b = /^1[34578]\d{9}$/;b.test(a)6. 去掉字符开头和结尾的空格var a = ' abbb ';var b = /^\s+|\s+$/g;a.replace(b,'');7. 限制文本框只能输入数字和小数点(二位小数点)
启发性的例子
var str = 'thisIsSpinalTap'; str = str.replace(/([a-z])([A-Z])/g,'$1,,$2');str;//"this Is Spinal Tap"总结:利用小括号将正则表达式分为两个部分,(当然可以分更多),分别对应于replace中的两个参数。(命名固定$1,$2,$3....)
阅读全文
0 0
- 正则表达式基础与实践
- 正则表达式基础与学习01----来自《编译原理与实践》
- 正则表达式基础与学习02----来自《编译原理与实践》
- 正则表达式基础与学习03----来自《编译原理与实践》
- 正则表达式与通配符基础
- Java与正则表达式之正则表达式基础
- javascript与正则表达式基础一
- java基础10:正则表达式与反射
- awk基础与正则表达式运用
- C#基础之字符串与正则表达式
- javascript正则表达式基础与复习
- java基础11:正则表达式与反射
- mysql正则表达式实践
- 正则表达式-实践篇
- 正则表达式实践篇
- 正则表达式实践篇
- 正则表达式-实践-初稿
- 正则表达式基础表达式
- STM32启用Bootloader支持配置
- 使用jmokit进行单元测试
- Spring Data与Hibernate、Mybatis的区别
- 一个故事告诉你比特币的原理及运作机制
- div超出高度的时候出现滚动条
- 正则表达式基础与实践
- 【BZOJ】1143 [CTSC2008]祭祀river 二分图
- R实战系列
- java入门第一季笔记整理
- C数据类型
- 中国剩余定理
- Java标准输入
- spring boot
- 洛谷1003