撸一个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时也返回成功,很郁闷搜索了 ...
随机推荐
- 响应式页面字体用什么单位:rem
html:62.5%//10pxbody:1.4rem;//14px... <!doctype html> <html> <head> <title>a ...
- win7 64位Apache http server+PHP配置
一.下载PHP 1.首先下载apache http server(我本来是想在官网下载,但是找半天也没找到,于是就在网上下了一个老版本的)我是在这个网址下载的:http://download.csdn ...
- angular.js的post数据方式
公司的项目前端部分现在改用angular,一切从头学起,今天记录一下关于数据请求的问题,由于get的请求方式比较简单,与post也类似,所以就单独讲讲post方式. 文档上post数据的写法有好几种, ...
- centos 6.3 64位安装php5.5及配置tengine
PHP 用到的工具包: yum install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel ...
- C语言学习笔记——堆和栈——未整理
C语言笔记 栈区 栈stack是一种先进后出的内存结构,所有的自动变量,函数的形参都是由编译器自动放出栈中,当一个自动变量超出其作用域时,自动从栈中弹出.出入栈是由C语言编译器自动分配 ...
- iOS - Responder Chain
在iOS中,当发生事件响应时,必须知道由谁来响应事件.这就是由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类,响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次 ...
- C#中Socket编程解决应用程序直接的通信
using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Net; ...
- Ubuntu修改语言环境为英文
转自把语言环境变量改为英文 将Ubuntu系统语言环境改为英文的en_US.UTF-8 查看当前系统语言环境 locale 编辑配置文件,将zh_US.UTF-8改为en_US.UTF-8,zh改为e ...
- [转贴]Linq之动态查询
最近写Linq碰到一个问题, 就是如果要写一个查询系统,这个系统里面有很多TextBox可以填, 然后捞出符合各个字段的数据. 在SQL查询的时候还满方便的,用字符串连连连就可以了, ( 也就是sql ...
- 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
原文:[Xamarin开发 Android 系列 6] Android 结构基础(上) 前面大家已经熟悉了什么是Android,而且在 [Xamarin开发 Android 系列 4] Android ...