昨天发了一篇在JS中可以使用的正规表达式大全。然后晚上就有常来博客访问的小伙伴来问,如何在JS中使用这些的正规则表达式?然后自己就整理了一些关于JS中使用正则表达式的方法,给大家做个参考吧。

JS中支持正则表达式的 string 对象的方法

js中的 search,match,replace 以及 split 对象方法,都可以使用正则表达式,具体的用法,如下:

1、js search 方法使用正则表达式

search:查找与正则表达式相匹配的值,并返回其位置。

js代码:

<script>
var reg = /\d/; //正则表达式,匹配数字
var str = 'abcdef123sdf';
console.log(str.search(reg));
</script>

返回值:6 (从0开始的)

注意:

(1)、search() 方法不执行全局匹配,它将忽略标志 g。

(2)、search() 是从字符串的开始进行检索,并返回第一个被匹配对像检索的位置

(3)、如果没有检测到对象,则会返回 -1

2、js match 对象方法,使用正则表达式

match:查找一个或多个与正规表达式匹配的值

例1:match 全局匹配,返回一个带有所有匹配对像的数组

js代码:

<script>
var reg = /\d/g; //正则表达式,匹配数字 加 g 表示全局匹配所有的数字
var str = 'abcdef123sdf';
console.log(str.match(reg));
</script>

返回数组: ["1", "2", "3"]

例2:match 对象单个匹配,不使用修饰符 g

js代码:

<script>
var reg = /\d/; //正则表达式,这里只匹配一次,不是会局部
var str = 'abcdef123sdf';
console.log(str.match(reg));
</script>

返回结果:["1", index: 6, input: "abcdef123sdf", groups: undefined]

注意:

(1)、match() 可以在字符串中,匹配一次或多次符合规则的文本,当然这主要看要匹配的正则表达式有没有标志 g

(2)、如果正则表达式没有标志 g,那么 match() 方法就只会在被检索的字符串中执行一次匹配。如果没有匹配到则返回null,否则返回一个存放了与它找到的匹配文本有关的信息的数组。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本,除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在被匹配字符串中的位置,input 属性声明的是对被匹配字符串的引用。

(3)、如果匹规则有标志 g,则 match() 方法将执行全局检索,找到被匹配文本中的所有匹配的子字符串,并组成数组进行返回(数组中只有匹配到的子字符串,没有其它属性),如未匹配到,则返回 null.

3、js replace 对象方法,使用正则表达式

replace:替换与正规表达式相匹配的值

js代码:

<script>
// var reg = /\d/g; // 添加 g 表示,全局替换
var reg = /\d/; // 没有 g,只替换匹配到的第一个
var str = 'abcdef123sdf';
console.log(str.replace(reg,'A'));
</script>

返回值:abcdefA23sdf

4、split对象方法 使用正则表达式,将字符串分割成数组

split:将一串字符串分割为一个数组

js代码:

js split 方法使用正则表达式,切割字符串

<script>
var reg = /(?:[a-zA-Z]+)/;
var str = '123a456b789c1A2B3C5';
console.log(str.split(reg));
</script>

返回值: ["123", "456", "789", "1", "2", "3", "5"]

js RegExp 对象对像正则表达式的操作

RegExp:对象是带有预定义属性和方法的正则表达式对象。 

关于 RegExp 表达式,我们这里不做过多的介绍,只简单的说一下它的 exec 方法与 test 方法!

1、exec 方法:

exec:检索字符串内是否存在某值,如有返回一个数组,如没有返回 null

JS代码:

<script>
test = new RegExp('niao', 'g');
console.log(test.exec('feiniaomy.com')); 
</script>

返回值:["niao", index: 3, input: "feiniaomy.com", groups: undefined]

2、test() 方法

test():检测一个字符串是否匹配某个模式.

js代码:

<script>
test = new RegExp(/^(?:(?:\+|00)86)?1[3-9]\d{9}$/, 'g');  //验证手机号的正则表达式
console.log(test.test('13512347895')); 
</script>

返架值:true