撸一个JS正则小工具
写完正则在浏览器上检测自己写得对不对实在是不方便,于是就撸了一个JS正则小demo出来。
demo


代码部分
首先把布局样式先写好。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js正则查找替换工具</title>
<link rel="stylesheet" type="text/css" href="./RegExp.css">
<script type="text/JavaScript" src="./RegExp.js"></script>
</head>
<body>
<form name="tester" action="" method="post" onSubmit="processRegex(this);return false">
<table border="1" cellpadding="4" cellspacing="0" width="550">
<tr>
<th class="Dialog">js正则查找替换工具</th>
</tr>
<tr>
<td class="Dialog">
<span class="header">请输入正则表达式:</span>
<br>
<input name="RegEx" type="text" size="62" style="font-size:13px">
<input type="checkbox" name="caseSensitive" id="caseSensitive" value="Yes">
<label for="caseSensitive">区分大小写</label>
<input type="radio" name="operation" id="operationFind" value="find" checked onClick="hideReplaceFields()">
<label for="OperationFind">查找</label>
<input type="radio" name="operation" id="operationReplace" value="replace" onClick="showReplaceFields()">
<label for="OperationReplace">替换</label>
<br>
<span class="header" id="replaceheader">请输入替换的正则表达式:</span>
<br>
<input id="RegExReplace" name="RegExReplace" type="text" size="62" style="font-size:13px">
<span class="header" style="margin-top: 3px;display: block;">填写你想查找或替换的文本:</span>
<textarea name="searchText" cols="70" rows="6"></textarea>
<img src="http://files.cnblogs.com/files/MuYunyun/pkq.gif" style="margin-left: 10px">
<br>
<input name="submit" type="submit" style="font-weight: bold" value="开始">
</td>
</tr>
</table>
</form><br>
<span id="output"></span>
<script language="JavaScript">
hideReplaceFields();
</script>
</body>
</html>
布局
body {
font-family: arial;
font-size: 12px;
}
input {
font-size: 11px;
}
textarea {
font-size: 11px;
}
th {
background:#8888FF;color:white;text-align:left
}
td {
background:#CCCC99;color:black;font-size:12px
}
.RowA {
background: #CCCC99
}
.RowB {
background: #EEEEBB
}
.header {font-weight: bold}
样式
接着就是用js分别构造查找和替换两个函数,用到了RegExp对象的一些属性,思路还是比较简单的。代码如下:
// 没选中替换则不能输入
function hideReplaceFields() {
document.getElementById('RegExReplace').disabled = true;
document.getElementById('replaceheader').disabled = true;
}
// 点击替换则能输入
function showReplaceFields() {
document.getElementById('RegExReplace').disabled = false;
document.getElementById('replaceheader').disabled = false;
}
// 查找
function processRegexFind(text, regex, flags) {
var reg = new RegExp(regex, flags);
var lastIdx = -1;
var iCount = 0;
var result = "";
var output = '<div style="height:200px;overflow-y:auto;width:550"><table border="0" cellpadding="2" cellspacing="0" width="550"><tr><th width="*">匹配内容</th><th>位置</th><th>长度</th></tr>'
// 循环
while (lastIdx != 0) {
var mtch = reg.exec(text);
if (reg.lastIndex !== 0) { //lastIndex属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。
iCount++;
if (iCount % 2) {
style = "RowA"
} else style = "RowB";
// 输出
output += '<tr class="' + style + '"><td>' + RegExp.lastMatch + '</td><td>' + (reg.lastIndex - RegExp.lastMatch.length) + '</td><td>' + RegExp.lastMatch.length + '</td></tr>';
}
lastIdx = reg.lastIndex;
}
output += '</table></div>';
if (iCount !== 0) {
result = "匹配个数: " + iCount + output;
} else result = '未找到匹配的项';
return result;
}
// 替换
function processRegexReplace(text, regexfind, regexreplace, flags) {
var re = new RegExp(regexfind, flags);
var newstr = text.replace(re, regexreplace);
var result = '<div style="height:200px;overflow-y:auto;width:550"><table border="0" cellpadding="2" cellspacing="0" width="550"><tr><th>替换后:</th></tr><tr><td>' + newstr + '</td></tr>';
return result;
}
// 人口
function processRegex(form) {
var output = '';
var flags;
if (form.caseSensitive.checked) flags = "g";
else flags = "gi";
//判断是查找还是替换
if (form.operationFind.checked) {
output = processRegexFind(form.searchText.value, form.RegEx.value, flags);
} else if (form.operationReplace.checked) {
output = processRegexReplace(form.searchText.value, form.RegEx.value, form.RegExReplace.value, flags);
}
document.getElementById('output').innerHTML = output;
return false;
}
用这小工具学习js正则可以事半功倍哟。大家新年快乐!
撸一个JS正则小工具的更多相关文章
- 调用百度API写了一个js翻译小工具
目前还未完成的功能有:textarea高度自适应,移动端与pc端都写了.效果如图: html: <!DOCTYPE html> <html lang="en"&g ...
- 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...
- 利用 Python 写一个颜值测试小工具
我们知道现在有一些利用照片来测试颜值的网站或软件,其实使用 Python 就可以实现这一功能,本文我们使用 Python 来写一个颜值测试小工具. 很多人学习python,不知道从何学起.很多人学习p ...
- 【翻译】要理解Ext JS 5小工具
原版的:Understanding Widgets in Ext JS 5 在Ext JS 5,引入了新的"widgetcolumn",支持在网格的单元格中放置组件. 同一时候,还 ...
- 两周撸一个掘金微信小程序
利益相关 无 声明 这并不是掘金官方小程序(貌似没有搜到掘金 APP 对应的官方小程序),完全为第三者开发者开发,仅用于学习交流,禁止用于其他用途.若要使用官方正版,可访问掘金 官方网站,或下载掘金官 ...
- 使用PyQt4制作一个正则表达式测试小工具
最近在做一些网络爬虫的时候,会经常用到正则表达式.为了写出正确的正则表达式,我经常在这个网站上进行测试:Regex Tester.这个页面上面一个输入框输入正则表达式,下面一个输入框输入测试数据,上面 ...
- Python学习之旅:用Python制作一个打字训练小工具
一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码 ...
- 快速入门PaddleOCR,并试用其开发一个搜题小工具
介绍 PaddleOCR 是一个基于百度飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别.竖排文本识别.长文本识别.同时支持多种文本检测.文本识别的训练算法. ...
- 2014第8周一JS正则小问题
今天解决一个关于JS正则表达式的小问题,需求是匹配6位或9位数字,我原来的写法是这样的/^(/d){6}|(/d){9}$/.test(val),但测试发现输入1234567时也返回成功,很郁闷搜索了 ...
随机推荐
- 用javascript操作xml(三)关于Jquery的html()不兼容IE的解决办法
当 $("#xxx").html(data); 不兼容,方法替换为 document.getElementById("xxx").innerHTML=data;
- PHPCMS二次开发教程
PHPCMS V9 结构设计 根目录|–api 结构文件目录|–caches 缓存文件目录 |– configs 系统配置文件目录 |– caches_* 系统缓存目录|–phpcms p ...
- yum安装lamp环境
装了好些次lamp环境了,都没好好总结下,现在总结下 ^ ^ 1.替换163的yum源 1.检查系统版本 cat /etc/redhat-releas (我的版本是CentOS release 6 ...
- 安装 SQL Server 2005 的硬件和软件要求(官方全面)
SQL Server 2005 安装要求 本主题介绍了安装 SQL Server 205 的硬件和软件要求,以及查看安装文档的说明. 硬件和软件要求(32 位和 64 位) 访问 SQL Server ...
- 【python】python的二元表达式和三元表达式
二元表达式 x,y=4,3if x>y: s = yelse: s= x print s x if x<y else y 三元表达式: >>> def f(x,y): ...
- C#中多线程写DataGridView出现滚动条导致程序卡死(无响应)的解决办法
因为写的程序涉及到多线程维护一个DataGridView,然后蛋疼的发现经常卡死...一开始以为是读写冲突的原因,然后就加了锁,问题依旧...然后发现每次出现滚动条的时候程序才会无响应,所以感觉应该是 ...
- MDK常用快捷键
一.常用编译相关的快捷键 1.编译(单个文件) Ctrl+F7 2.连接 F7 二.常用调试相关的快捷键 1.运行/停止 Ctrl+F5 2.Run(全速运行) F5 3.Stop Deb ...
- qt5 基础知识
QWidget wQLineEdit edit; edit.show(); //如果没有这句,编辑框edit将会显示在父窗口的左上角edit.setParent(&w); //以w为父窗口并显 ...
- 解决在HTTPS页面里嵌套HTTP页面浏览器block的问题
问题描述: 浏览器默认是不允许在HTTPS里面引用HTTP页面的,ie下面会弹出提示框提示是否显示不安全的内容,一般都会弹出提示框,用户确认后才会继续加载,但是chrome下面直接被block掉,只在 ...
- bzoj 3144: [Hnoi2013]切糕 最小割
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 681 Solved: 375[Submit][Status] ...