zoukankan      html  css  js  c++  java
  • JS正则表达式笔记

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

    正则 描述 正则 描述
    f 匹配换页符 匹配制表符
    匹配换行符 v 匹配垂直制表符
    匹配回车 s 匹配单个空格,等同于[f v];
    S 表示非空格字符 d 在正则中表示数字
    w 表示单词字符,等同于字符集合[a-zA-Z0-9_] 创建正则对象时,要转义
    + 表示出现一到多次 ^ 表示后边出现的数字必须在开头
    $ 表示前面出现的数字必须出现在结尾    

      

    g是模式修正符,表示在整个字符串里多次查找

    match方法来找到和reg正则相匹配的内容

    "ab23839cd".match(/d+/)

    空白s(包括空格回车制表符等)

    f匹配换页符, 匹配换行符, 匹配回车, 匹配制表符,v匹配垂直制表符。
    s匹配单个空格,等同于[f v]。例如:
    例1:

    var reg = /s.+/;
    var str='This is a test String.';
    alert(reg.exec(str));

    返回“is a test String.”,正则的意思是匹配第一个空格以及其后的所有非换行字符。

    同样,S表示非空格字符。
    例2:

    var reg = /S+/;
    var str='This is a test String.';
    alert(reg.exec(str));

    匹配结果为This,当遇到第一个空格之后,正则就停止匹配了。

    在正则中最常用到的一个是:
    例3:var reg=/^s*$/; //匹配任意空或空白字符,如果你什么也没输入,或输入的只有空格、回车、换行等字符,则匹配成功。这样就可以验证用户是否正确输入内容了。
    这个用来验证输入框里是否写了有效效字符,用法如下:

    var  reg=/^s*$/;
    if(reg.test(value)){
      alert('请输入有效值');
      return false;
    }

    单字符w

    w(小写w)表示单词字符,等同于字符集合[a-zA-Z0-9_]。例如:

    var reg = /w+/;
    var str='wanjinfen';
    alert(reg.exec(str));

    返回完整的wanjinfen字符串,因为所有字符都是单词字符。

    var reg = /w+/;
    var str='.className';
    alert(reg.exec(str));

    结果显示匹配了字符串中的className,只有第一个“.”唯一的非单词字符没有匹配。

    var reg = /w+/;
    var str='正则教程';
    alert(reg.exec(str));

    试图用单词字符去匹配中文自然行不通了,返回 null

    W(大写W)表示非单词字符,等效于[^a-zA-Z0-9_]

    var reg = /W+/;
    var str='正则教程';
    alert(reg.exec(str));

    返回完整的字符串,因为,中文算作是非单词字符。

    分组和分组的引用

    形式如下:/(子正则表达式)1/ 依旧用例子来说明:

    1.例子

    var reg = /w/;
    var str='zhufengpeixun';
    alert(reg.exec(str));
    //返回z

    2.例子

    var reg = /(w)(w)/;
    var str='zhufengpeixun';
    alert(reg.exec(str));

    返回zh,z,h ,zh是整个正则匹配的内容,z是第一个括号里的子正则表达式匹配的内容,h是第二个括号匹配的内容

    3.例子

    var reg = /(w)1/;
    var str='zhufengpeixun';
    alert(reg.exec(str));

    则会返回null。这里的“1”就叫做反向引用,它表示的是第一个括号内的子正则表达式匹配的内容。在上面的例子中,第一个括号里的(w)匹配了z,因此“1”就同样表示z了,在余下的字符串里自然找不到z了。与第二个例子对比就可以发现,“1”是等同于“第1个括号匹配的内容”,而不是“第一个括号的内容”

    var reg = /(w)1/;
    var str='bbs.zhufengpeixun.cn';
    alert(reg.exec(str));

    这个正则则会匹配到bb,b。同样,前面有几个子正则表达式我们就可以使用几个反向引用。例如:

    var reg = /(w)(w)21/;
    var str='woow';
    alert(reg.exec(str));

    会匹配成功,因为第一个括号匹配到w,第二个括号匹配到o,而21则表示ow,恰好匹配了字符串的最后两个字符。

    括号() ,表示子表达式,也叫分组

    前面我们曾经讨论过一次括号的问题,见下面这个例子:

    var reg = /^(b|c).+/;
    var str='bbs.blueidea.com';
    alert(reg.exec(str));

    这个正则是为了实现只匹配以b或者c开头的字符串,一直匹配到换行字符,但是。上面我们已经看到了,可以使用“1”来反向引用这个括号里的子正则表达式所匹配的内容。而且exec方法也会将这个字正则表达式的匹配结果保存到返回的结果中。

     未完……

  • 相关阅读:
    Mybatis主配置文件常见使用讲解
    Mybatis导入原生配置文件
    分页查询时,使用cookie保存上次的查询条件。jQuery实现方法以及中间遇到的坑
    jQuery实现checkbox即点即改,批量计数,以及中间遇到的坑
    ()IT 职场经验)一位10年Java工作经验的架构师的经验分享,感觉很受用。
    SpringMVC的Controller
    Spring MVC执行原理和基于Java的配置过程
    集成学习综述笔记
    generalization error
    Failed to install 'unknown package' from GitHub: schannel: failed to receive handshake, SSL/TLS connection failed
  • 原文地址:https://www.cnblogs.com/minjh/p/9512327.html
Copyright © 2011-2022 走看看