正则表达式测试工具

本文介绍了一个基于jQuery和Bootstrap构建的正则表达式测试工具,该工具可以帮助开发者快速测试正则表达式的正确性和匹配效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<style>
body{margin-top:30px} .label{margin:0px 3px;}
</style>
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger hide" id="alert-box"></div>
<div class="form-group">
<label for="input-text">测试文本</label>
<input type="text" class="form-control" id="input-text" placeholder="Text">
</div>
<label for="inputRegex">正则表达式</label>
<div class="input-group">
<input type="text" class="form-control" id="input-regex" placeholder="Regex">
<span class="input-group-btn">
<button class="btn btn-default" id="test-button" type="button">测试一下</button>
</span>
</div>
</div>
</div>
<div class="row">
<h3>匹配结果</h3>
<div class="col-sm-12">
<div class="well well-lg" id="results-box"></div>
</div>
</div>
</div>
<script>
({
init: function() {
this.textbox = $("#input-text");
this.regexbox = $("#input-regex");
this.alertbox = $("#alert-box");
this.resultsbox = $("#results-box");
this.testBtn = $("#test-button");
this.testBtn.click(function() {
this.clearResultAndErrors();
var text = this.textbox.val();
var regex = this.regexbox.val();
if (text == "") {
this.err("请输入测试文本")
} else if (regex == "") {
this.err("请输入正则表达式");
} else {
regex = this.createRegex(regex);
if (!regex) return;
var results = this.getMatches(regex, text);
if (results.length > 0) {
var html = this.getMatchesCountString(results);
html += this.getResultsString(results, text);
this.resultsbox.html(html);
} else {
this.resultsbox.text("没有匹配"); 
}
}
}.bind(this));
},
clearResultAndErrors: function() {
this.resultsbox.text("");
this.alertbox.addClass("hide").text("");
},
err: function(text) {
this.alertbox.removeClass("hide").text(text);
},
createRegex: function(regex) {
try {
if (regex.charAt(0) == "/") {
regex = regex.split("/");
regex.shift();
var flags = regex.pop();
regex = regex.join("/");
regex = new RegExp(regex, flags);
} else {
regex = new RegExp(regex, "g");
}
return regex;
} catch(e) {
this.err("无效的正则表达式");
return false;
}
},
getMatches:function(regex, text) {
var results = [];
var result;
if (regex.global) {
while((result = regex.exec(text)) !== null) {
results.push(result);
}
} else {
results.push(regex.exec(text));
}
return results;
},
getMatchesCountString: function(results) {
return "<p>匹配到" + results.length + "个</p>"
},
getResultsString: function(results, text) {
for (var i = results.length - 1; i >= 0; i--) {
var result = results[i];
var match = result.toString();
var prefix = text.substr(0, result.index);
var suffix = text.substr(result.index + match.length);
text = prefix 
+ '<span class="label label-info">'
+ match
+ '</span>'
+ suffix;
}
return "<h4>" + text + "</h4>";
}
}).init();
</script>

代码注意点:
1.createRegex函数中,注意join的参数是"/",并用try catch来判断正则是否有效
2.getMatches函数中,通过正则对象的global属性来判断修饰符是否为g。并用exec方法来获取匹配内容
3.getResultsString函数中,拼接html字符串,for循环必须逆序,因为要保证之前匹配到的index不受影响
Regex Testor Version 1.02 Copyright (c) 2013 Fiery Red - flameleo 我们在使用正则表达式( regex: regular expression )的过程中,经常发现正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。对于刚接触正则表达式的人来说多练习,多使用,才能熟练掌握正则表达式。 由于难于读写,容易出错,且需要反复练习。所以找一种工具对正则表达式对我们脑中构思的regex进行测试是很有必要的。 1.特点 a.适合初学者,在不断测试用学习如何使用正则表达式。 b.可以分组保存,测试中用到的正则表达式。 c.本工具使用最常见的regex。以下是简单示例: a|b Matches a or b gr(a|e)y Matches a or e . Matches any single character [abc] Matches a single character a, b or c [^abc] Matches any single character except a, b or c [a-z] Matches a single charactor in the range a to z [a-zA-Z] Matches a single charactor in the range a to z or A to Z ^ Matches the start of the filename $ Matches the end of the filename * Matches the preceding element zero or more times ? Matches the preceding element zero or one times + Matches the preceding element one or more times {x} Matches the preceding element x times {x,} Matches the preceding element x or more times {x,y} Matches the preceding element between x and y times 值得一提的是()代表子匹配,有些环境中gr(a|e)y Matches gray or grey 还支持许多常见的转义字符 \b,\B,\c,\d,\D,\f,\n,\r,\s,\S,\t,\v,\w,\W,\x,\u 具体详见附件 Regular Expression Syntax1.html 2.功能介绍 a.界面上显示提供regex输入框和原文本框,点击[模式匹配]按钮后,会在右侧输出结果,包括匹配字符串列表和文本。 b.对于测试中一些有用的regex,点击[insert]按钮添加到模式列表,以备日后使用。你可以位该regex添加描述分组,该信息会在程序结束后保存在CustomPatternInfo.ini文件中。 c.可以参考Readme_1.jpq和Readme_2.jpq图片介绍。 3.有待改进 a.界面布局和控件友好型和交互性。 b.界面功能提供regex语法支持。(暂时可以通过导入附件RegexSystax.ini到CustomPatternInfo.ini中) 4.意见反馈 a.请将您的宝贵意见反馈到 FieryRed_2012@163.com 附件: Readme.txt Readme_1.jpg Readme_2.jpg Regular Expression Syntax.html RegexSystax.ini
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值