撸一个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时也返回成功,很郁闷搜索了 ...
随机推荐
- 『奇葩问题集锦』Fedora ubuntu 下使用gulp 报错 Error: watch ENOSPC 解决方案
用gulp启动,错误如下 Error: watch ENOSPC at exports._errnoException (util.js:746:11) at FSWatcher.start (fs. ...
- php练习5——简单的学生管理系统(隐藏控件的使用)
要求: 程序:gradeManage.html和gradeManage.php 结果 注意: 1.使用隐藏控件时,得在不同表单下,不能在同一个表单下: 2. ...
- HDU 1166 敌兵布阵 线段树的基本应用——动态区间和问题
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1166 简单题,1A了,这个好像就是传说中的“点树”. 设当前结点表示线段[left, right],编号 ...
- 开发C# .net时使用的数据库操作类SqlHelp.cs
练习开发WPF程序的时候,是这样写的,虽然很简单,相必很多新手会用到,所以拿来共享一下, using System; using System.Collections.Generic; using S ...
- 支付宝Demo 报错
支付宝SDK-------DEMO第一次编译肯定是会报错的: 修正的方法为: 打开项目属性->Build Settings 找到 Library SearchPaths 看见里面的参数了 ...
- 30年的Hello world
30 年的 Hello world 转载自:http://www.admin10000.com/document/2398.html 最近我在7月4日这一天所在的那周休假了.休假期间,我利用大把的时间 ...
- 解决cocos2d-X 2.0版本后创建的Android项目提示org.cocos2dx.lib.Cocos2dxActivity找不到问题
原地址: http://blog.163.com/zhoulong19880518@126/blog/static/6070970220132511558143/ 解决方法: 复制 ***\co ...
- 关于 OneAPM Cloud Test DNS 监控的几个重要问题
你注意到了吗?OneAPM Cloud Test 已经全面开启支持 DNS 监控了! CT 产品自上线以来一直致力于产品完善,希望能够尽可能全面地满足用户需求,为您提供完美的用户体验.目前 Cloud ...
- 李洪强iOS开发Swift篇—10_方法
李洪强iOS开发Swift篇—10_方法 一.简单说明 跟其他面向对象语言一样,Swift中的方法可以分为2大类: (1)实例方法(Instance Methods) 在OC中,实例方法以减号(-)开 ...
- USB OTG
OTG检测的原理是:USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时设备 ...