JsvsScript RegExp对象

JsvsScript RegExp对象

创建RegExp对象的语法:
new RegExp(pattern, attributes);

参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 “g”、“i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

RegExp 对象属性

global 属性用于返回正则表达式是否具有标志 “g”。
它声明了给定的正则表达式是否执行全局匹配。
如果 g 标志被设置,则该属性为 true,否则为 false。
<script type="text/javascript">
var str = "Visit W3School.com.cn";
var patt1 = new RegExp("W3");
if(patt1.global)
  {
  alert("Global property is set");
  }
else
  {
  alert("Global property is NOT set.");
  }
</script>
lastIndex 属性用于规定下次匹配的起始位置:
<script type="text/javascript">
var str = "The rain in Spain stays mainly in the plain";
var patt1 = new RegExp("ain", "g");

patt1.test(str)
document.write("Match found. index now at: " + patt1.lastIndex);
</script>

RegExp 对象方法

compile() 方法用于在脚本执行过程中编译正则表达式。
compile() 方法也可用于改变和重新编译正则表达式。
<script type="text/javascript">

var str="Every man in the world! Every woman on earth!";

patt=/man/g;
str2=str.replace(patt,"person");
document.write(str2+"<br />");

patt=/(wo)?man/g;
patt.compile(patt);
str2=str.replace(patt,"person");
document.write(str2);

</script>
exec() 方法用于检索字符串中的正则表达式的匹配:
<script type="text/javascript">

var str = "Visit W3School"; 
var patt = new RegExp("W3School","g");
var result;

while ((result = patt.exec(str)) != null)  {
  document.write(result);
  document.write("<br />");
  document.write(patt.lastIndex);
 }
</script>
test() 方法用于检测一个字符串是否匹配某个模式:
<script type="text/javascript">
var str = "Visit W3School";
var patt1 = new RegExp("W3School");

var result = patt1.test(str);

document.write("Result: " + result);
</script>

支持正则表达式的 String 对象的方法

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串:
<script type="text/javascript">

var str="Visit W3School!"
document.write(str.search(/W3School/))
// 输出:6
</script>
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置:
<script type="text/javascript">

var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World") + "<br />")
document.write(str.match("worlld") + "<br />")
document.write(str.match("world!"))
//输出:
//world
//null
//null
//world!
</script>
split() 方法用于把一个字符串分割成字符串数组:
<script type="text/javascript">

var str="How are you doing today?"

document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))
//输出:
//How,are,you,doing,today?
//H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
//How,are,you
</script>

方括号

方括号用于查找某个范围内的字符

[abc] 表达式用于查找方括号之间的任何字符:
new RegExp("[abc]")
var str="Is this all there is?";
var patt1=/[a-h]/g;
表达式用于查找任何不在方括号之间的字符:
new RegExp("[^xyz]")
var str="Is this all there is?";
var patt1=/[^a-h]/g;
[0-9]查找任何从 0 至 9 的数字。
[a-z]查找任何从小写 a 到小写 z 的字符。
[A-Z]查找任何从大写 A 到大写 Z 的字符。
[A-z]查找任何从大写 A 到小写 z 的字符。

元字符

元字符是拥有特殊含义的字符:
\w 元字符用于查找单词字符:
new RegExp("\w")
var str="Give 100%!";
var patt1=/\w/g;
\W 元字符用于查找非单词字符,单词字符包括:a-z、A-Z、0-9,以及下划线:
new RegExp("\W")
var str="Give 100%!";
var patt1=/\W/g;
\d 元字符用于查找数字字符:
new RegExp("\d")
var str="Give 100%!";
var patt1=/\d/g;
\D 元字符用于查找非数字字符:
new RegExp("\D")
var str="Give 100%!";
var patt1=/\D/g;

量词

n+ 量词匹配包含至少一个 n 的任何字符串:
new RegExp("n+")
var str="Hellooo World! Hello W3School!";
var patt1=/o+/g;
n* 量词匹配包含零个或多个 n 的任何字符串:
new RegExp("n*")
var str="Hellooo World! Hello W3School!";
var patt1=/lo*/g;
n{X,} 量词匹配包含 X 个 n 的序列的字符串,X 必须是数字:
new RegExp("n{X}")
var str="100, 1000 or 10000?";
var patt1=/\d{4}/g;
n{X,Y} 量词匹配包含 X 至 Y 个 n 的序列的字符串。X* 和 Y 必须是数字:
new RegExp("n{X,Y}")
var str="100, 1000 or 10000?";
var patt1=/\d{3,4}/g;
n^ 量词匹配任何开头为 n 的字符串:
new RegExp("^n")
var str="Is this his";
var patt1=/^Is/g;
?=n 量词匹配任何其后紧接指定字符串 n 的字符串:
new RegExp("regexp(?=n)")
var str="Is this all there is";
var patt1=/is(?= all)/g;
n$ 量词匹配任何结尾为 n 的字符串:
new RegExp("n$")
var str="Is this his";
var patt1=/is$/g;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值