RegExp对象

正则表达式

正则表达式 Regular Expression 是一种表达文本情势的要领 相似字符串的模板 一般用来根据”给定情势”婚配文本

新建正则表达式有两种体式格局:
字面量体式格局 以斜杠示意最先和完毕

var regexp=/abc/;

另一种是运用RegExp组织函数

var regexp=new RegExp('abc');

RegExp组织函数还能够接收第二个参数,示意修饰符

var regex = new RegExp('xyz', 'i');
// 等价于
var regex = /xyz/i;

实例要领

RegExp.prototype.test()

正则实例对象的test要领返回一个布尔值 示意当前情势是不是能婚配参数字符串

/react/.test('react and vue');    //true

上面代码考证参数字符串中是不是包括react 效果返回true

RegExp.prototype.exec()

正则气力对象的exec要领 用来返回婚配效果 假如婚配 则返回一个数组 成员是婚配胜利的子字符串 不然返回null

var s='x_y_z';
var r1=/x/;
var r2=/a/;
var r3=/xy/;
r1.exec(s)   //[ 'x', index: 0, input: 'x_y_z' ]
r2.exec(s)   // null
r3.exec(s)   // null

exec要领的返回数组还包括以下两个属性:
input:悉数原字符串。
index:悉数情势婚配胜利的最先位置(从0最先计数)。

var r=/a(b+)a/;
var arr=r.exec('_abbba_aba_');
console.log(arr)   //['abbba','bbb']
console.log(arr.index)   // 1  从字符串的第二个位置最先婚配胜利
console.log(arr.input)  //'_abbba_aba_'

假如正则表达式加上g修饰符 贼能够屡次运用exec要领 下一次搜刮的位置从上一次婚配胜利完毕的位置最先

var reg=/a/g;
var str='abc_abc_abc';
var r1=reg.exec(str);
console.log(r1);    //[ 'a', index: 0, input: 'abc_abc_abc' ]
var r2=reg.exec(str);
console.log(r2)   // [ 'a', index: 4, input: 'abc_abc_abc' ]
var r3=reg.exec(str);
console.log(r3);  //[ 'a', index: 8, input: 'abc_abc_abc' ]

婚配划定规矩

特别字符

正则表达式对一些不能打印的特别字符,供应了表达要领
n 婚配换行键;
r 婚配回车键;
t 婚配制表符 ;
v 婚配垂直制表符;
f 婚配换页符;
0 婚配null字符;
xhh 婚配一个以两位十六进制数(x00-xFF)示意的字符;
uhhhh 婚配一个以四位十六进制数(u0000-uFFFF)示意的 Unicode 字符;

字符类

字符类示意有一系列字符可供挑选,只需婚配个中一个就能够了。一切可供挑选的字符都放在方括号内

/[abc]/.test('hello')  //false   不包括a、b、c这三个字母中的任一个,所以返回false
/[abc]/.test('apple')  //true    包括字母a,所以返回true 

脱字符:
假如方括号内的第一个字符是[^],则示意除了字符类当中的字符,其他字符都能够婚配

/[^abc]/.test('hello')  //true
/[^abc]/.test('bbbc')   //false

连字符:
关于一连序列的字符,连字符(-)用来供应简写情势,示意字符的一连局限

/a-z/.test('b') // false  连字符不出如今方括号当中,就不具有简写的作用,只代表字面的寄义,所以不婚配字符b
/[a-z]/.test('b') // true

反复类

准确婚配次数,运用大括号({})示意
{n}示意正好反复n次,{n,}示意最少反复n次,{n,m}示意反复不少于n次,不多于m次

/Ro{2}kie/.test('Rookie') // true  指定o一连涌现2次
/Ro{2,5}kie/.test('Rooookie') // true  指定o一连涌现2次到5次之间 
? 问号示意某个情势涌现0次或1次,等同于{0, 1}。
* 星号示意某个情势涌现0次或屡次,等同于{0,}。
+ 加号示意某个情势涌现1次或屡次,等同于{1,}。


修饰符

示意情势的附加划定规矩,放在正则情势的最尾部。

修饰符能够单个运用,也能够多个一同运用。

g修饰符:
g修饰符示意全局婚配(global),加上它今后,正则对象将婚配悉数相符前提的效果,重要用于搜刮和替代。

var regex = /b/;
var str = 'abba';

regex.test(str); // true
regex.test(str); // true
regex.test(str); // true

正则情势不含g修饰符,每次都是从字符串头部最先婚配。所以,一连做了三次婚配,都返回true

var regex = /b/g;
var str = 'abba';

regex.test(str); // true
regex.test(str); // true
regex.test(str); // false

正则情势含有g修饰符,每次都是从上一次婚配胜利处,最先向后婚配。由于字符串abba只要两个b,所之前两次婚配效果为true,第三次婚配效果为false

i修饰符:
默许情况下,正则对象辨别字母的大小写,加上i修饰符今后示意疏忽大小写

/abc/.test('ABC') // false    
/abc/i.test('ABC') // true
//加了i修饰符今后,不斟酌大小写,所以情势abc婚配字符串ABC

m修饰符:
m修饰符示意多行情势
会修正^和$的行动

字符串的要领

String.prototype.toLowerCase(),String.prototype.toUpperCase()

toLowerCase要领用于将一个字符串悉数转为小写,toUpperCase则是悉数转为大写。它们都返回一个新字符串,不转变原字符串

'Hello World'.toLowerCase()
// "hello world"

'Hello World'.toUpperCase()
// "HELLO WORLD"

String.prototype.charAt()

charAt要领返回指定位置的字符,参数是从0最先编号的位置

var s = new String('abc');

s.charAt(1) // "b"
s.charAt(s.length - 1) // "c"

String.prototype.charCodeAt()

charCodeAt要领返回字符串指定位置的 Unicode 码

'abc'.charCodeAt(1) // 98

String.prototype.indexOf(),String.prototype.lastIndexOf()

indexOf要领用于肯定一个字符串在另一个字符串中第一次涌现的位置,返回效果是婚配最先的位置。假如返回-1,就示意不婚配
indexOf要领还能够接收第二个参数,示意从该位置最先向后婚配。

'hello world'.indexOf('o', 6) // 7

lastIndexOf要领的用法跟indexOf要领一致,重要的区别是lastIndexOf从尾部最先婚配,indexOf则是从头部最先婚配。

'hello world'.lastIndexOf('o') // 7

String.prototype.slice()

slice要领用于从原字符串掏出子字符串并返回,不转变原字符串。它的第一个参数是子字符串的最先位置,第二个参数是子字符串的完毕位置(不含该位置)

'JavaScript'.slice(0, 4) // "Java"

假如参数是负值,示意从末端最先倒数盘算的位置,即该负值加上字符串长度

'JavaScript'.slice(-6) // "Script"

String.prototype.substr()

substr要领用于从原字符串掏出子字符串并返回,不转变原字符串,跟slice和substring要领的作用雷同。
substr要领的第一个参数是子字符串的最先位置(从0最先盘算),第二个参数是子字符串的长度。

'JavaScript'.substr(4, 6) // "Script"

假如第一个参数是负数,示意倒数盘算的字符位置。假如第二个参数是负数,将被自动转为0,因此会返回空字符串。

'JavaScript'.substr(4, -1) // ""

String.prototype.substring()

substring要领用于从原字符串掏出子字符串并返回,不转变原字符串,跟slice要领很相像。它的第一个参数示意子字符串的最先位置,第二个位置示意完毕位置(返回效果不含该位置)

'JavaScript'.substring(0, 4) // "Java"

String.prototype.split()

split要领根据给定划定规矩支解字符串,返回一个由支解出来的子字符串构成的数组。

'a|b|c'.split('|') // ["a", "b", "c"]

surprise

让一个字符串反转

var str='abcde';
var arr=str.split("");
console.log(arr)   //[ 'a', 'b', 'c', 'd', 'e' ]
var arr2=arr.reverse();
console.log(arr2)  //[ 'e', 'd', 'c', 'b', 'a' ]
vvar str2=arr.toString();
console.log(str2);   //e,d,c,b,a
    原文作者:RoOK1E
    原文地址: https://segmentfault.com/a/1190000016097955
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞