JavaScript正则表达式

正则表达式的例子

2018-08-01  本文已影响0人  椰果粒

参考:
https://juejin.im/post/5ac1f1106fb9a028be362731

1、检验字符串首尾是不是数字(首或者尾有就行)

var reg = /^\d|\d$/g;

2、首尾都是数字:首尾以数字结尾,中间匹配任意字符

var reg = /^\d[\w\W]*\d$/g;

3、找出所有的aabb形式

var reg = /(\w)\1(\w)\2/g;
var str = "cddeedd";
console.log(str.match(reg)); // ['ddee']

4、将所有的aabb形式替换成abab形式

var str = "ccddhhgg";
var reg = /(\w)\1(\w)\2/g;
console.log(str.replace(reg,"$2$2$1$1"));
console.log(str.replace(reg, function($0, $1, $2){  // 分别代表全局,第一个子表达式,第二个子表达式
    return $2 + $1 + $2 + $1;
}))

5、驼峰命名
利用子表达式,匹配出-x(-和要转成大写的字符)

var reg = /-(\w)/g;
var str = 'hello-world-haha-heng';
var res = str.replace(reg,function($0,$1){
    return $1.toUpperCase();
})
console.log(res); //helloWorldHahaHeng

6、找出ab相连的表达式中的a,替换成%
方法:正向断言

var str = 'abaaaa';
var reg = /a(?=b)/g;    // 问号后面是b的
var reg = /a(?!b)/g;    // 问号后面不是b的
console.log(str.replace(reg,"*"));  // *baaaa

7、千位分隔符
方法:正向断言,从后往前$,匹配不是空位的位置加逗号

var str = "123123345";
var reg = /(?=(\B)((\d){3})+$)/g;
var res = str.replace(reg,',');
console.log(res);

8、字符串去重

var str = "aaabbbdddsss";
var reg = /(\w)\1*/g;
console.log(str.replace(reg,"$1"));

9、去除字符串的空格
最后一个\b表示匹配单词边界,比如'o ',被替换成o了

去除所有空格
"  hello world  ".replace(/\s/g,"")    // "helloworld"
去除开头和结尾的空格
"  hello world  ".replace(/^(\s*)|(\s*)$/g,"")    //"hello world"
去除中间的空格,保留两边的空格
"  hello world fu jing  wen ".replace(/(\S)\s+(\b)/g,"$1")    //"  helloworldfujingwen "

10、串中是否包含数字

var str = "hjadh";
var reg = /\d/g;
console.log(reg.test(str)); // false

11、是否包含连续重复的字母

var str = "aabcd";
var reg = /([a-zA-Z])\1/g;
console.log(reg.test(str)); // true

12、字符串是否以元音字母结尾

// 字符串是否以元音字母结尾
var str = "aabcdu";
var reg = /[aeiou]$/gi;
console.log(reg.test(str)); // true

13、是否包含连续出现三次的数字,如果有,就返回最新出现的,否则返回false

function containNum(str){
    var reg = /\d{3}/g;
    var res = str.match(reg);
    if(res){
        var result = res.slice(res.length-1);
        return result
    }else{
        return false;
    }
}
var str = "12345abc";
console.log(containNum(str));

14、判断是否符合某种格式 xxx-xxx-xxxx(x为数字)

var str = "123-451-423";
var reg = /^(\d{3}-){2}\d{4}$/g;
console.log(str.match(reg));

15、判断是否符合USD格式
以$开头,每隔3位有分隔符,如果有小数,小数位数为2

var str = "$1,234.23";
var reg = /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/g;
console.log(str.match(reg));

16、获取url的参数

var url = 'https://www.google.com.hk/search?name=fujingwen&age=23&sex=female';
// var url = location.href;
function getPar(url){
    var obj = {};
    var reg = /\??(\w+)=(\w+)&?/g;
    url.replace(reg, function($0,$1,$2){
        obj[$1] = $2;
    })
    console.log(obj)
}
getPar(url);
// 验证邮箱
var reg = /^([a-zA-Z0-9_\-])+@([a-zA-Z0-9_\-])+(\.[a-zA-Z0-9_\-])+$/;

// 验证身份证号码,15位或者18位,15位全是数字,8位中前17位是数字,最后一位是数字或者x
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(x|\d|X)$)/;

// 匹配汉字
var reg = /^[\u4e00-\u9fa5]*$/g;
上一篇下一篇

猜你喜欢

热点阅读