js正则表达式

Posted tutuj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js正则表达式相关的知识,希望对你有一定的参考价值。

一、正则表达式基础

正则表达式(Regular Expression)是对文本或者字符的匹配和替换,匹配的是位置或者字符。

首先正则匹配不仅仅能够实现精确匹配,还可以实现模糊匹配。可以分为两种:横向匹配和纵向匹配。

横向匹配:就是匹配的字符的数量可以在一个范围内。可以同量词来实现。如:

var regex = /ab2,5c/g;    //g代表全局匹配,表示在全局范围内可以匹配前面一个a,后面跟了最少两个最多5个b最后跟了一个c的字符串。
var string = "abcabbcabbbcabbbbcabbbbbcabbbbbbc";
console.log( string.match(regex) );       ////["abbc", "abbbc", "abbbbc", "abbbbbc"]

纵向匹配:是指匹配到一位字符的时候可以匹配到多种可能,可以用字符组来实现。如:

 var regex = /a[abc]c/g;      //表示在全局范围内匹配前面一个字符是a,后面一个字符是a或者b或者c的字符,最后一个字符是c的字符串。
 var string = "abc aac acc";
 console.log( string.match(regex) );    ////["abc","aac","acc"]

接下来来看一下正则表达式的匹配:

1、量词,就是重复的数量。

m 等价于m,m,表示出现m次。

m,表示至少出现m次。
m,n 表示至少出现m次,至多出现n次。
? 等价于0,1,表示出现0次或者1次。 + 等价于1,,表示出现至少一次。 * 等价于0,,表示出现0次或者多次。

2、字符组,用字符的特定含义来匹配。

\d就是[0-9]。表示是一位数字。其英文是digit(数字)。

\D就是[^0-9]。表示除数字外的任意字符。

\w就是[0-9a-zA-Z_]。表示数字、大小写字母和下划线。w是word的简写,也称单词字符。

\W是[^0-9a-zA-Z_]。非单词字符。

\s是[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。s是space character的首字母。

\S是[^ \t\v\n\r\f]。非空白符。

.就是[^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。

3、正则表达式的修饰符

ignoreCase:RegExp对象是否含有修饰符i,表示对大小写不敏感的匹配。

global: RegExp对象是否含有修饰符g,表示进行全局的匹配。

multiline: RegExp对象是否含有修饰符m,表示进行多行匹配。

source: 显示正则表达式函数体。

4、正则表达式的定位符

^ (脱字符):匹配输入字符串的开始位置

$ :匹配输入字符串的结束位置

\b :匹配一个单词边界

\B :匹配非单词边界

(?=p):p是一个子模式,表示p前面的位置,positive lookahead 正向先行断言。

(?!p):表示除开P前面的位置,
negative lookahead负向先行断言。

注意: ^ 放在字符簇中是取反的意思,放在整个表达式中是开始位置;

二、正则表达式操作方法

正则操作的方法,共有6个,字符串4个,正则3个:

String#search

String#split

String#match

String#replace

RegExp#test

RegExp#exec
RegExp#compile

正则表达式方法:

    test:用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));  ////true

    exec:用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

var patt1=new RegExp("e");

document.write(patt1.exec("The best things in life are free"));    ////e

 compile:用于改变 RegExp,compile() 既可以改变检索模式,也可以添加或删除第二个参数

var patt1=new RegExp("e");

document.write(patt1.test("The best things in life are free"));   ////true

patt1.compile("d");

document.write(patt1.test("The best things in life are free"));  ////false

字符串对象的方法:

    match:找到一个或多个正则表达式的匹配。返回匹配值。

var regex = /a[abc]c/g;
var string = "abc aac acc";
console.log( string.match(regex) );   ////["abc","aac","acc"]

    search:用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置.

var regex = /a[abc]c/g;
var string = "bcaaacacc";
console.log( string.search(regex) );     ////3

    split:拆分字符串。

var regex = /,/g;
var string = "html,css,javascript";
console.log( string.split(regex) );     ////["html", "css", "javascript"]

    replace: 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var regex = /,/g;
var string = "html,css,javascript";
console.log( string.replace(regex,"!") );   ////html!css!javascript

以上是关于js正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

text 正则表达式片段

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

js 常用正则表达式表单验证代码