正则表达式

Posted on 2017-04-12 20:48  风铃同学  阅读(278)  评论(0编辑  收藏  举报

js中的正则表达式

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

正则表达式的创建

//使用RegExp对象创建
var regObj = new RegExp("(^\\s+)|(\\s+$)","g"); // 双斜杠表示转义

//使用直接字面量创建
var regStr = /(^\s+)|(\s+$)/g;

修饰符

修饰符 描述
i 大小写不敏感
g 全局匹配
m 多行匹配

范围

注:[]只能匹配一个字符

表达式 描述
[abc] 方括号内的任意字符
[^abc] 非方括号内的任意字符
[0-9] 0到9的任意数字
[a-z] a-z的任意小写字母
[A-Z] A-Z的任意大写字母
[abcd] abcd中的任意一个字母
(a b

元字符

元字符:拥有特殊含义的字符

元字符 描述
. 除了换行和行结束符的任意单个字符
\w 单词字符
\W 非单词字符
\d 数字
\D 非数字
\s 空白字符
\S 非空白字符
\b 匹配单词边界
\B 匹配非单词边界
\0 NULL字符
\n 换行符号
\f 换页符
\r 回车符
\t 制表符
\v 垂直制表符
\xxx 八进制 xxx 规定
\xdd 十六进制数 dd 规定的字符
\uxxxx 十六进制数 xxxx 规定的Unicode字符

量词

量词 描述
  • | [1,+∞]个
    
  • | [0,+∞]个
    

? | [0,1]个
{n} | n个
{n,m} | [n,m]个
{n,} | [n,+∞]个
x$ | 以x结尾的字符串
^x | 以x开头的字符串
?=x | 其后紧跟指定字符串n的字符串
?!x | 其后没有紧跟指定字符串n的字符串

RegExp对象方法

方法 描述
compile 编译正则表达式
exec 检索字符串中指定的值。返回找到的值,并确定其位置
test 检索字符串中指定的值,返回true/false

代码:

// exec方法:
var str = "Visit W3School";
var patt = new RegExp("W3School","g");
var result;

while ((result = patt.exec(str)) != null)  {
  console.log(result);  // W3School
  console.log(patt.lastIndex);  // 14
 }


// test方法
var str = "Visit W3School";
var patt1 = new RegExp("W3School");

var result = patt1.test(str);

console.log(result);   // true 

支持正则表达式的String对象的方法

方法 描述
search 检索与正则表达式相匹配的值,返回的是位置
match 找到一个或多个正则表达式匹配值,返回的是值
replace 替换与正则表达式匹配的子串
split 把字符串分割为字符串数组

代码:

// search:返回第一个匹配值的起始位置,如果无匹配值,则返回-1
var str="Visit W3School!"
console.log(str.search(/W3School/));  // 6


// match:找到一个或者多个正则表达式的匹配值
var str="1 plus 2 equal 3"
console.log(str.match(/\d+/g));  // 1,2,3


// replace: 替换正则指定的字符串
var str="Visit Microsoft!"
console.log(str.replace(/Microsoft/, "W3School"));  // Visit W3School!



// 把字符串分割成字符串数组

var words = sentence.split(' ')
// 或者:
var words = sentence.split(/\s+/)


"hello".split("", 3)	//可返回 ["h", "e", "l"]

常用正则表达式

^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$