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<str.length; i++) {
    if(str.charAt(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

敏感词过滤

转换前<textarea name="" id="" cols="30" rows="10"></textarea><br>
<input type="button" value="过滤" id="btn1"><br>
转换后<textarea name="" id="" cols="30" rows="10"></textarea>
<script>
var oBtn = document.getElementById("btn1");
var aText = document.getElementsByTagName("textarea");

oBtn.onclick = function() {
    var reg = /我们|你们|他们/g;
    
    aText[1].value = aText[0].value.replace(reg, "***");
};
</script> 

常用简写

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标签

<textarea name="" id="txt1" cols="40" rows="10"></textarea>
<input type="button" value="转换" id="btn1">
<textarea name="" id="txt2" cols="40" rows="10"></textarea>
<script>
var oTxt1 = document.getElementById("txt1");
var oTxt2 = document.getElementById("txt2");
var oBtn = document.getElementById("btn1");

// <div id="aaa"></div>
oBtn.onclick = function() {
    // 天生贪婪
    // var reg = /<.+>/g;
    var reg = /<[^<>]+>/g;// 左右尖括号中间什么都能出现,就是不能有左右尖括号
    
    oTxt2.value = oTxt1.value.replace(reg, "");
};
</script>

量词

// {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"]

校验邮箱

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

去除收尾空格

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<aEle.length; i++) {
        /*if(aEle[i].className == sClass) {
            aResult.push(aEle[i]);
        }*/
        /*if(aEle[i].className.search(sClass) != -1) {// 为abox的class也会识别,不是我们想要的
            aResult.push(aEle[i]); 
        }*/
        if(reg.test(aEle[i].className)) {
            aResult.push(aEle[i]);
        }
    }
    return aResult;
}

单词边界

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

var reg = /\bAaayang\b/;

console.log(reg.test('my name is Aaayangs'));// false
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容