千万别把js的正则表达式方法和字符串方法搞混淆了
我们在字符串操作过程中肯定经常用了test() split() replace() match() indexof()等方法,很多人经常把用法写错了,包括我,所以今天细细的整理了下。
test()是判断是字符串是否与正则表达式匹配,返回true | false;
//例1 现在有个要求,判断字符串是不是数字
var reg=/^\d$/; //匹配数字正则
var str="123"; //一个字符串
//是这样写呢
reg.test(str);
//还是这样写叱
str.test(str); //例2 现在又有一个要求,替换字符串中所有的数字
var reg=/\d/g; //匹配所有数字正则
var str="AAAA00000BBBBB11111CCCCCC";
//问题又来了,是这样写呢还是这样写
reg.replace(str,"");
str.replace(reg,"");
同学们千万别死记硬背,容易伤身体,只要我们搞清楚了这样正则表方法就很容易掌握用法
这些方法分为两类,一类是正则表达式方法,另一类是字符串方法
正则表达式方法这样调用:reg.方法(字符串);
字符串方法这样调用 :字符串.方法(reg);
具体的分类往下看吧……
一、正则表达式的定义
1、var reg=//参数;
2、var reg=new RegExp("","参数")
二、正则表达式的常用方法,方法分两种一种正则表达式自定的方法和字符串操作方法
1、RegExp对象方法
1.1、test():返回字符串是否与Reg匹配。
例:
var reg=/\d/;
var str1="123";
var str2="ABC";
reg.test(str1);//true
reg.test(str2);//false
1.2、exec():返回字符串中与reg首次匹配的值
var reg=/\d/;
var str1="923ABC";
reg.exec(str1);//9
1.3、compile():用于改变RegExp
var reg=/\d/;
var str1="923";
console.log(reg.test(str1));//true
reg.compile("\w");
console.log(reg.test(str1));//false
2、字符串操支持正则表达式的方法
2.1、replace():替换reg匹配字符串
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD
//用--替换字符串中数字,但结果发现却只替换掉了第一个,因为reg默认匹配第个
//那么要替换所有的数字,需要在reg后面加个全部的参数 g
var reg=/\d/g;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD
2.2、split():按reg匹配的值拆分成数组
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.split(reg));//["AAA", "BBBB", "CCCC", "DDDD"]
2.3、match():返回reg匹配的第个字符串
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.match(reg));//"9" 返回第一个数字"9"
2.4、search():返回reg匹配的第一个字符串的位置,没有则返回-1
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.search(reg)); //3 返回第个数字 9的位置
3、很多人容易把以上两个方法顺序写反。
正则方法的调用是:reg.方法(字符串);
字符串方法的调用:字符串.方法(reg);
三、参数:
g :全文查找
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD
//用--替换字符串中数字,但结果发现却只替换掉了第一个,因为reg默认匹配第个
//那么要替换所有的数字,需要在reg后面加个全部的参数 g
var reg=/\d/g;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD
i :忽略大小写
var reg = /a/i;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--")); // AAA9BBBB2CCCC3DDDD var reg = /a/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--")); //--AA9BBBB2CCCC3DDDD
m:多行查找
这个有点不好理解,多行查找和全文查找有什么区别呢。我们来举个例子看看
//例:全文查找 替换所有的A
var reg = /A/g;
var str1 = "AAA9BBBB2CCCCAAAA3DDDD";
console.log(str1.replace(reg,"-")); // ---9BBBB2CCCC----3DDDD
//例:多行查找
var reg = /A/m;
var str1 = "AAA9BBBB2CCCCAAAA3DDDD";
console.log(str1.replace(reg,"-")); // -AA9BBBB2CCCCAAAA3DDDD //多行查找一般用于有换行的字符中
var reg = /^A/;
var str1 = "BBBB9BBBB2CCCC\r\nAAAA3DDDD";
console.log(str1.replace(reg,"-"));
//BBBB9BBBB2CCCC
//AAAA3DDDD
//字符串里有个换行符当正则匹配第一行后就结束了,所以这里就引用了换符符的功能
var reg = /^A/m;
var str1 = "BBBB9BBBB2CCCC\r\nAAAA3DDDD";
console.log(str1.replace(reg,"-"));
//BBBB9BBBB2CCCC
//-AAA3DDDD
//全文查找的范围大于多行查找
千万别把js的正则表达式方法和字符串方法搞混淆了的更多相关文章
- js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression)
js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression) 一.总结 1.str_replace:正则作用:高效快速匹配 2.break ...
- JavaScript易混淆知识点小回顾--数组方法与字符串方法;
数组属性: arr.length;查看数组的长度 arr.Pop;删除数组最后一个元素; 数组的方法: arr.push();添加到数组末端; arr.shift();删除数组的第一个元素; arr. ...
- python——元组方法及字符串方法
元组方法 Tup.count():计算元组中指定元素出现的次数 Tup.count('c') Tup.index():在元组中从左到右查找指定元素,找到第一个就返回该元素的索引值 Tup.index( ...
- js 中一些重要的字符串方法
String 对象方法 方法 描述 charAt() 返回在指定位置的字符. charCodeAt() 返回在指定的位置的字符的 Unicode 编码. concat() 连接两个或更多字符串,并返回 ...
- js 的正则表达式 部分展示test()方法的验证功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- JavaScript中数组的方法和字符串方法总结
数组是首先的一个对象, 可以通过Array构造器创建一个数组,数组方法总结如下 cacat() 链接两个数组 join() 将数组链接成字符串 pop() 删除最后一个元素 shift() 删 ...
- 20个常用的JavaScript字符串方法
摘要: 玩转JS字符串. 原文:JS 前20个常用字符串方法及使用方式 译者:前端小智 Fundebug经授权转载,版权归原作者所有. 本文主要介绍一些最常用的JS字符串函数. 1. charAt(x ...
- js正则表达式test方法、exec方法与字符串search方法区别
1.正则表达式test方法 test() 方法用于检测一个字符串是否匹配某个模式 返回值: 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 fal ...
- Js用正则表达式验证字符串
js 常用正则表达式表单验证代码 作者: 字体:[增加 减小] 类型:转载 js 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...
随机推荐
- shell脚本实现 视频格式转换 ffmpeg 实现视频转换
#!/bin/bash original=$1 echo $original # check whether file is exist # if $original de chang du wei ...
- urllib.request ProxyHandler
import urllib.request proxy_support = urllib.request.ProxyHandler({}) opener = urllib.request.build_ ...
- php实现新闻页面
首页 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- Tuple元祖
http://www.codeproject.com/Articles/193537/C-4-Tuples
- REST简析
内容译自英文原文:A Brief Introduction to REST 不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火如荼:虽然当前主流的方式明显地集 ...
- How to use 'crontab' command on bitnami
You can edit the cron file using the following command: $ sudo crontab -e You can add a new line lik ...
- 51nod1678 lyk与gcd
容斥定理所以可以用莫比乌斯函数来搞.逆向思维答案等于总和减去和他互质的.那么设f[i]=∑a[j] i|j.ans[i]=sum- ∑mo[j]*f[j] 跟bzoj2440那道题挺像的都是利用莫比乌 ...
- (转载)UITableView使用详解
在开发iphone的应用时基本上都要用到UITableView,这里讲解一下UITableView的使用方法及代理的调用情况 UITableView使用详解 - (void)viewDidLoad { ...
- UVALive 5532 King(差分约束,spfa)
题意:假设一个序列S有n个元素,现在有一堆约束,限制在某些连续子序列之和上,分别有符号>和<.问序列S是否存在?(看题意都看了半小时了!) 注意所给的形式是(a,b,c,d),表示:区间之 ...
- acdream 1683 村民的怪癖(KMP,经典变形)
Problem Description 娜娜费劲九牛二虎之力终于把糖果吃完了(说好的吃不完呢?骗人,口亨~),于是,缘溪行,忘路之远近.忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷,娜娜甚异之 ...