正则表达式1
var re = new RegExp("d(b+)(d)","ig"); //Regular expression pattern.
var str = "cdbBdbsbdbdz";
//String to be searched.
var arr = re.exec(str);
//Perform the search.
exec(string str):执行正则表达式匹配,并返回匹配结果,根据 MSDN给出的例子运行结果看,exec每次执行都是从上次直接的匹配结 束位置开始,并且返回的值似乎是RerExp对象,而RegexBuddy给出的 解释是返回一个数组,不过没有给出周详例子,我觉得还是根据试验结
果为依据比较可靠。
var str1 = "A:My name is Peter!\nB:Hi Peter!"; str1 = str1.replace(/Peter/g, "<b>$&</b>"); alert(str1);
都0:39了。。。就写到这里吧。
正则工具软件下载(密码: regex):regex buddy 2.06.zip 我写的例子请看:JScript做语法加亮显示(代码精简)
print(arr.index + "-" + stIndex + "\t" + arr);
}
else{
alert("You need a newer version of JScript for this to work");
}
}
function matchDemo()
{
var s;
//Declare variable.
ScriptEngineMinorVersion())
if (ver >= 5.5){
var src = "The rain in Spain falls mainly in the plain.";
var re = /\w+/g;
var arr;
while ((arr = re.exec(src)) != null)
JScript中提供正则表达式操作的类名为RegExp,能用两种方式实 例化RegExp类型的对象。
方法一,构造函数实例化:
var myRegex = new RegExp("\\w+", "igm "); //\w+为实际正则表达式,注意第一个\为转义之用,igm分别表示忽 略大小写,全局搜索,多行搜索,这个后面会解释
test(string str):如果str匹配正则表达式返回true,否则返回false,这 个类似string对象的match方法
RegExp对象包含以下一些属性:
index:字符串中第一个匹配表达式的位置,初始为-1 input:正则表达式的匹配目标,注意是只读的 lastIndex:下一个匹配表达式的位置,原话是(Returns the character position where the next match begins in a searched string.)也不知道有 没有翻译错,这个属性我没有用到。 lastMatch:最后一个匹配表达式的字符串 lastParen:最后一个匹配的子匹配串,比如正则表达式里有多个以() 分组的匹配项,lastParen表示最后一组所匹配的结果
验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^\+?[1-9][0-9]*$ 验证非零的负整数:^\-[1-9][0-9]*$ 验证非负整数(正整数 + 0) ^\d+$ 验证非正整数(负整数 + 0) ^((-\d+)|(0+))$ 验证长度为3的字符:^.{3}$ 验证由26个英文字母组成的字符串:^[A-Za-z]+$ 验证由26个大写英文字母组成的字符串:^[A-Z]+$ 验证由26个小写英文字母组成的字符串:^[a-z]+$ 验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$ 验证由数字、26个英文字母或者下划线组成的字符串: ^\w+$ 验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开 头,长度在6-18之间,只能包含字符、数字和下划线。 验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+ 验证汉字:^[\u4e00-\u9fa5],{0,}$ 验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+ ([-.]\w+)*$ 验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./? %&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$ 验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格 式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-
leftContext:从目标字符串的开头到last match的起始位置的所有字 符。
rightContext:从last match的结束位置到整个目标字符串的结束位置 的所有字符。
$1…$9:表示第n组匹配的结果,这个在正则表达式里有多个以()分 组时有用
接下来讲讲,JScript中String对象和正则表达式有关的操作:
compile(string regex, string flags):预编译正则表达式以使其运行更 快,经过测试的确预先编译后效率有明显提升。regex参数为正则表达 式,flags能为以下3个值的组合: g ? 全局搜索,我的试验结果是不加g 标志就只能匹配第一个符合条件的字符串 i ? 忽略大小写 m ? 多行搜 索,似乎默认已是多行搜索了
s = "$1 returns: " + RegExp.$1 + "\n";
s += "$2 returns: " + RegExp.$2 + "\n";
s p.$3 + "\n";
s += "input returns : " + RegExp.input + "\n";
match(string regex):接受一个正则表达式,并返回该字符串是否和
这个表达式匹配。 replace(srting regex, string str):将和正则表达式匹配的子字符串替
换为str,这个函数看似简单,不过还隐藏着更高级用法哦,请看以下例 子。
例子1:
var str1 = "A:My name is Peter!\nB:Hi Peter!"; str1 = str1.replace(/Peter/g,"Jack"); alert(str1);
方法二,直接赋值法:
var myRegex = /\w+/igm; //效果和上一个语句相同,只是这里不必用转移字符,原正则表达式是 什么样子就是什么样子,igm就和前面例子的igm作用相同
具体用什么方式看大家喜好了,个人觉得第二种方式写的正则比较好 读些,RegexBuddy帮助文件也是推荐第二种方式。 RegExp对象包含 以下一些操作:
s += "$2 contains: " + RegExp.$2 + "\n";
s += "$3 contains: " + RegExp.$3;
return(s);
}
function RegExpTest()
{
var ver = Number(ScriptEngineMajorVersion() + "." +
XXXXXXX,XXX-XXXXXXXX,XXXXXXX, XXXXXXXX。 验证身份证号(15位或18位数字):^\d{15}|\d{}18$ 验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式 为:“01”-“09”和“1”“12” 验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确 格式为:01、09和1、31。 整数:^-?\d+$ 非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$ 正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\. [0-9]+)|([0-9]*[1-9][0-9]*))$ 非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][09]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮点数 ^(-?\d+)(\.\d+)?$