最近在学习正则表达式,为了提高学习的效率,写了一个很简陋的正则表达式验证器的网页。
原理很简单,就是使用new RegExp() 将传入的正则字符串构造成RegExp对象,并使用它的test方法验证传入的待验证字符串,是否符合规则。
当然也可以使用eval()方法。就是将传入的正则字符串,前后接一个"/",然后使用eval()处理形如 "/正则字符串/"的字符串,得到RegExp对象,再使用它的test方法验证传入的待验证字符串,是否符合规则。
源码
<html>
<head>
<script type="text/javascript">
function doTest() {
//传入的字符串不需要转义
var regStr = document.getElementById("regArea").value;
//var regStr = "^(\\d{5,5}|\\d{5,5}-\\d{4,4})?";
var resObj = document.getElementById("resultArea");
resObj.innerHTML = "";
if (regStr) {
//var reg = eval("/^(\\d{5,5}|\\d{5,5}-\\d{4,4})?$/");
//var reg = new RegExp("^(\\d{5,5}|\\d{5,5}-\\d{4,4})?$");
//var reg = eval("/"+regStr+"/");
var reg = new RegExp(regStr);
var str = document.getElementById("strArea").value;
resObj.innerHTML = reg.test(str);
} else {
alert("Please input the \"RegExp String\".");
}
}
</script>
</head>
<body>
<table border="0">
<tr>
<td>
RegExp String
<br/>
<textarea id="regArea" rows="12" cols="50">^(\d{5,5}|\d{5,5}-\d{4,4})?</textarea>
</td>
<td width="50">
<a href="javascript:void(null);" οnclick="doTest();">test</a>
<br/>
<br/>
<br/>
<label id="resultArea">
</label>
</td>
<td>
Test String
<br/>
<textarea id="strArea" rows="12" cols="50">55555-2582</textarea>
</td>
</tr>
</table>
</body>
</html>
使用方法见以下截图:
附件是打包的截图和源文件。