javaScript 正则表达式

    xiaoxiao2021-03-25  101

    javaScript 正则表达式


    参考连接

    RegExp对象

    ‘\b’:代表单词边界,比如/\bis\b/会匹配一句话中的is单词,不会匹配单词中的is

    ‘()’:小括号可以用于分组,以便获取到正则表达式匹配的内容,用 1 2可以获取第二个小括号的内容。以此类推

    g:global全文搜索,不添加,搜索到第一个匹配停止

    i:ignore case 忽略大小写,默认大小写敏感

    m:multiple lines多行搜索

    var reg = new RegExp(‘\b要替换的文本\b’, ‘g’); “文本”.replace(reg, “替换后的文本”)

    字面量 var reg = /\b文本\b/g;

    元字符

    正则表达式由两种基本字符类型组成

    1.原义文本字符:代表它原来含义的字符 例如:abc、123

    2.元字符:在正则表达式中有特殊意义的非字母字符

    例如:\b表示匹配单词边界,而非\b 在正则表达式中具体特殊含义的字符:* + ? $ ^ . \ () {} []

    元字符:

    \t:水平制表符;

    \v:垂直制表符;

    \n:换行符;

    \r:回车符;

    \0:空字符;

    \f:换页符;

    \cX:与X对应的控制字符

    字符类

    使用元字符[]来构建一个简单的类,

    所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符 表达式[abc]把字符a或b或c归为一类,表达式可以匹配这类字符

    字符类取反

    使用元字符^创建反向类/负向类

    反向类的意思是不属于某一类的内容

    表达式[^abc]表示不是a或b或c的内容

    "a1b2c3".replace(/[abc]/g,"x"); // 匹配结果 : x1x2x3 "a1b2c3".replace(/[^abc]/g,"x"); // 取反 匹配结果 : axbxcx

    范围类

    范围类:[a-z],[0-9]等等,可以连写:[a-zA-Z]

    如果要匹配里面的横杠“-”,可以在后面加一个横杠“-”:[0-9-]

    “2016-09-05”.replace(/[0-9-]/g,”X”) => XXXXXXXXXXX

    预定义类

    ^在中括号中[]表示取反 不在[]表示以xxx开始

    \d 数字 \D 非数字 \s 空白符 \S 非空白符 \w 单词字符(字母数字下划线)等同于 [a-zA-Z_0-9] \W 非单词字符 . 除了回车符和换行符以外的所有字符

    正则表达式还提供了几个常用的边界匹配字符:

    ^ 开头 $ 结尾 \b 单词边界 \B 非单词边界

    量词

    ? 最多出现一次 + 至少出现一次 * 任意次 {n} 出现n次 {n,m} 出现n到m次 {n,} 至少出现n次

    JS贪婪模式和非贪婪模式

    正则表达式的匹配模式有:贪婪模式,非贪婪模式。默认模式为贪婪模式,设置非贪婪模式需要在量词后面添加疑问号“?”。

    例如: ‘123456789’.match(/\d{3,6}?/g)//匹配结果为['123456']123456789’.match(/\d{3,6}?/g) //匹配结果为 ['123','456','789']

    分组

    使用()可以达到分组的功能,使量词作用于分组

    | 或

    反向引用 $ 捕获分组

    '2015-12-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,$1/$2/$3);// 匹配结果 2015/12/25

    忽略分组

    分组:使用“()” ,忽略分组:“(?:)”。忽略分组的意思是说,虽然分了组,但是不能通过”$”来获取改组的内容。

    忽略分组 - 不希望捕获某些分组,只需要在分组内加上 “?:” 就可以 例: (?:Byron)

    前瞻(js不支持后顾)

    exp(?=assert) 正向前瞻 exp(?1assert) 负向前瞻

    前瞻 匹配某个正则之后 再检查 后面的匹配规则

    正向前瞻(/\w(?=\d)/);//匹配到单词之后,在检查后面是数字

    负向前瞻(/\w(?!\d)/)://匹配到单词之后,在检查后面不是数字

    对象属性

    g是否全文搜索

    i是否大小写敏感

    m是否多行搜索

    l当前表达式匹配内容的最后一个字符的下一个位置

    s正则表达式的文本内容

    test和exec 方法

    reg.test(“str”);// 测试参数是否匹配正则表达式reg

    字符串对象的方法

    str.search(reg);//search返回第一个匹配结果的index,查找不到返回-1;search方法是忽略全局匹配的

    str.match(reg);//返回数组,match方法 是否具有标志g对结果影响很大,没有标志g只执行一次匹配,没有找到文本,返回null,否则返回数组

    str.split(reg);//返回数组

    str.replace(reg,str1);//

    string.replace(str, replaceStr)

    string.replace(reg, replaceStr)

    string.replace(reg, function)

    转载请注明原文地址: https://ju.6miu.com/read-26321.html

    最新回复(0)