js表达式基本语法

作者:zccst

 

一、基础

1,各种语法

^, $

. , \w, \s, \d (\W, \S, \D与之相反)

[a-z],[^a-z]

{n,m}

*,+,?

\b(匹配边界), \B(不匹配边界)

\NUM(匹配NUM个,如(.)\1匹配两个连续相同的字符), \oNUM(八进制), \xNUM(十六进制)

 

 

patten 

?:patten  industr(?:y|ies)

?=patten  windows?=95|98|2000

?!=patten  windows?!=95|98|2000

 

2,贪婪模式

贪婪:尽可能多的匹配

不贪婪:在遇到限定符*,+,?,{n},{n,},{n,m}时,例‘o+?‘匹配o,‘o+‘匹配所有

 

 

二、函数

1,RegExp

exec

test

2,字符串函数

match

search

replace

split

 

 

具体:

1,exec

exec() 方法的功能非常强大,它是一个通用的方法,而且使用起来也比 test() 方法以及支持正则表达式的 String 对象的方法更为复杂。

如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。我们可以看得出,在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。

function execDemo(){
    var r, re; // 声明变量。
    var s = "The rain in Spain falls mainly in the plain mainly";
    re = /[\w]*(ai)n(ly)/ig;
    r = re.exec(s);//此结果只是匹配的第一个结果。不过里面还是一个数组
    document.write(r + "<br/>");
    console.log(r);
    for(key in r){
        document.write(key + "-" + r[key] + "<br/>");
        console.log(key , "-" , r[key])
    }
    alert(r[‘lastIndex‘]);
}
execDemo();

r打印出来的结果是

[0] mainly

[1] ai

[2] ly

index 24

input The rain in Spain falls mainly in the plain mainly

 

返回所有匹配结果,可以使用while

while ((result = re.exec(s)) != null)  {

}

 

2,test

 

字符串

1,match

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

var name = "JeffreyWay";

name.match(/e/); //e

name.match(/e/g); //e,e,还可以name.match(/e/g)[1]

var string = ‘This is just a string with some 12345 and some !@#$ mixed in.‘;

alert(string.match(/[a-z]+/gi)); // alerts "This,is,just,a,string,with,some,and,some,mixed,in"  

理由:可以匹配一个或多个大写或小写字母。i不区分大小写,g全局

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

如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。

注意:在全局检索模式下,match() 即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。如果您需要这些全局检索的信息,可以使用 RegExp.exec()。

 

2,search

3,replace

4,split

var str = ‘this is my string‘;    

alert(str.split(/\s/)); // alerts "this, is, my, string",可以str.split(/\s/)[3]

 

三、常用实例

 

js表达式基本语法,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。