正则表达式

  1. var reg = /pattern/flags 或者是 var reg = new RegExp(pattern, flags)
  2. 标志:i---忽略,m---多行匹配, g---全局匹配
  3. 对象字面创建方式不能字符串拼接,并且不需要转义,构造函数创建需要转义,

    var reg2 = new RegExp('\\d') // /\d/

  4. 元字符

    \d : 0-9之间的任意一个数字  \d只占一个位置
    \w : 数字,字母 ,下划线 0-9 a-z A-Z _
    \s : 空格或者空白等
    \D : 除了\d
    \W : 除了\w
    \S : 除了\s
    . : 除了\n之外的任意一个字符
    \ : 转义字符
    | : 或者
    () : 分组
    \n : 匹配换行符
    \b : 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 不占用字符串位数
    ^ : 限定开始位置 => 本身不占位置
    $ : 限定结束位置 => 本身不占位置
    [a-z] : 任意字母 []中的表示任意一个都可以
    [^a-z] : 非字母 []中^代表除了
    [abc] : abc三个字母中的任何一个 [^abc]除了这三个字母中的任何一个字符
    * : 0到多个
    + : 1到多个
    ? : 0次或1次 可有可无
    {n} : 正好n次;
    {n,} : n到多次
    {n,m} : n次到m次
  5. 例子

    var str = '1223334444';
    var reg = /\d{2}/g;
    var res = str.match(reg);
    console.log(res) //["12", "23", "33", "44", "44"]
    var str =' 我是空格君 ';
    var reg = /^\s+|\s+$/g; //匹配开头结尾空格
    var res = str.replace(reg,'');
    console.log('('+res+')') //(我是空格君)
  6. 一般[]中的字符没有特殊含义 如+就表示+,但是像\w这样的还是有特殊含义
    的,里面不会出现两位数,()的提高优先级功能:凡是有|出现的时候,我们一定要注意是否有必要加上()来提高优先级;()的提高优先级功能:凡是有|出现的时候,我们一定要注意是否有必要加上()来提高优先级;

    var str1 = 'abc';
    var str2 = 'dbc';
    var str3 = '.bc';
    var reg = /[ab.]bc/; //此时的.就表示.
    reg.test(str1) //true
    reg.test(str2) //false
    reg.test(str3) //true
    [12]表示1或者2 不过[0-9]这样的表示0到9 [a-z]表示a到z
    例如:匹配从18到65年龄段所有的人
    var reg = /[18-65]/; // 这样写对么
    reg.test('50')
    //Uncaught SyntaxError: Invalid regular expression: /[18-65]/: Range out of order in character class
    //聪明的你想可能是8-6这里不对,于是改成[16-85]似乎可以匹配16到85的年龄段的,但实际上发现这也是不靠谱的
    实际上我们匹配这个18-65年龄段的正则我们要拆开来匹配
    我们拆成3部分来匹配 18-19 20-59 60-65
    reg = /(18|19)|([2-5]\d)|(6[0-5])/;

保留两位小数

  1. num.tofix(2)此时返回的是一个字符串,此时可以在前面加入 + ,那么会转化为数字
  2. Math.round(num*100)/100,此时也会返回两位小数
posted @ 2018-08-23 12:00  dfgfgf  阅读(162)  评论(0编辑  收藏  举报