RegExp

Search

var str = 'abcdef';
console.log(str.search('bc'));// 1
console.log(str.search('g'));// -1

可以配合正则使用

var str = 'abcdef';
console.log(str.search('c'));// 2

console.log(str.search(/C/i));// 找到返回位置2
var str = 'abcd 443 gdfg 55';
var reg = /\d/;
console.log( str.search(reg) );// 5,第一个数字4出现在第5个位置

检测浏览器

var str = window.navigator.userAgent;
if(str.search(/firefox/i) != -1) {// 找到了
    console.log('火狐');
}
else if(str.search(/chrome/i) != -1) {
    console.log('Chrome');
}
else {
    console.log('不知道');
}

Substring

var str = 'abcdef';
console.log(str.substring(1, 4));// bcd
console.log(str.substring(1));// bcdef

CharAt

var str = 'abcdef';
console.log(str.charAt(0));

Split

var str = 'a-b-c-d-e-f';
console.log(str.split('-'));// ["a", "b", "c", "d", "e", "f"]

str.match

挑出字符串中的数字

var str = "12,87 76 -ddf e ef 89 ff76 9";
// 普通版
var arr = [];
var temp = '';
for(var i=0; i= '0' && str.charAt(i) <= '9') {
        temp += str.charAt(i);
    }
    else{
        if(temp) {
            arr.push(temp);
            temp = "";
        }
    }
}
// 最后一个是数字,但不会走for中的else了,这里再判断一次
if(temp) {
    arr.push(temp);
    temp = "";
}
console.log(arr);// ["12", "87", "76", "89", "76", "9"]

正则版

var reg = /\d+/g;
console.log(str.match(reg));

再举个例子

var str = 'sdfs 43 fdsf 454 66gg dff 99';
var reg = /\d/;
console.log( str.match(reg) );// ["4", index: 5, input: "sdfs 43 fdsf 454 66gg dff 99"]

var reg = /\d/g;
console.log( str.match(reg) );// ["4", "3", "4", "5", "4", "6", "6", "9", "9"]

var reg = /\d+/g;
console.log( str.match(reg) );// ["43", "454", "66", "99"]

RegExp的两种写法

var str = 'Abcdef';
// JS风格
var reg = new RegExp('a', 'i');
console.log(reg.test(str));// true

// perl风格
var reg2 = /a/i;
console.log(reg2.test(str));

Replace

var str = "abadAf";
var newStr = str.replace("a", "T");
console.log(newStr);// Tbadef

var newStr = str.replace(/a/gi, "T");
console.log(newStr);// TbTdTf

敏感词过滤

转换前

转换后

常用简写

var str = '1a2 abc ee 1b2 1c2';
// var reg = /1a2|1b2|1c2/;
var reg = /1[abc]2/g;

console.log(str.match(reg));// ["1a2", "1b2", "1c2"]

// [a,b]:a或者,或则b
// [12 34]:1或者2或者空格或者3或者4,只是指单个字符

// [0-9]
// [a-z]
// [0-9a-z]
// \d == [0-9]
// 
// [^a]:除了a以外的所有东西都可以
// [^0-9a-z]:除了0-9和a-z都可以
// \d:digital
// \w:[a-z0-9_]数字字母和下划线

var str = '  fd dfsf d d   ff  ';
var newStr = str.replace(/\s/g, "");
console.log(newStr);

// -D:[^0-9]非数字
// -W:[^a-z0-9_]
// \S:除了空格

去除HTML标签





量词

// {n,m}:最少出现n次,最多m次
// {n}:最多不限
// {,n}:最少不限
// {n}:正好n次

// + >> {1,}:最少一次
// * >> {0,}:零到任意次
// ? >> {0,1}:零次或1次

QQ号

// QQ:最少5位,最多11位,第一位不是0
// [1-9]\d{4,10}
var str = "我的QQ是:2482343438,你的是9954334吗?";
var reg = /[1-9]\d{4,10}/g;// [4,10]逗号后面不要有空格,例如[4, 10]

console.log(str.match(reg));// ["2482343438", "9954334"]

校验邮箱

// [email protected]
// 一串字母数字下划线@一串字母数字.2到4位的字母
// var reg = /\w+@[a-z0-9]+\.[a-z]{2,4}/;// 一部分符合即可
var reg = /\w+@[a-z0-9]+\.[a-z]{2,4}/;// 从行首到行尾完全符合
var str = "[email protected]";
console.log(reg.test(str));
console.log(str.match(reg));// ["[email protected]", index: 0, input: "[email protected]"]

去除收尾空格

var name = "   Aaa Yang   ";
var reg = /^\s+|\s+$/g;// 全局的行首或行尾的空格,中间的不算
var newName = name.replace(reg, "");
console.log(newName);

检测中文

// [\u4e00-\u9fa5],汉字Utf8编码的范围
var reg = /[\u4e00-\u9fa5]/;
var str = 'abfdfdf 34 34 +== 45';
console.log(reg.test(str));// false,没有中文

var str = "中fdsf";
console.log(reg.test(str));// true,有中文

getByClass

function getByClass(oParent, sClass) {
    var aEle = oParent.getElementsByTagName("*");
    var aResult = [];
    var reg = new RegExp('\\b'+sClass+'\\b', 'i');// \b是单词边界
    for(var i=0; i

单词边界

var reg = new RegExp('\\bAaayang\\b');// \b代表必须是单词边界,空格之类的

var reg = /\bAaayang\b/;

console.log(reg.test('my name is Aaayangs'));// false

你可能感兴趣的:(RegExp)