你平时如何测试正则表达式?直接写在大段的代码中,然后等待程序运行到那里,再用alert显示结果?或者是临时写一个页面,测试完成后把它丢掉?
你可以试一下我这个页面,虽然它很粗糙,但是测试正则表达式也足够了:))
一、说明:
1. 我的本意为交流技术.本人水平很菜.因此所贴出的代码中,会有不足之处.
2. 代码可任意修改.如果你觉得你修改过的代码比我的好,可将它贴出,我非常感谢.
3. 我对javascript的规范并不很熟悉.我的经验来自于开发.因此,若你对它有更好的见解,欢迎提出,我非常感谢.
二、测试用例:
1. 检查字符串中是否有非数字的字符:
test regex: \D
test regex flags: g
test string: 1234g56t78
2. 检查字符串中是否有非0-9、a~z、A-Z、_的字符:
test regex: \W
test regex flags: g
test string: i'm a pig! yes I'm!
3. 匹配字符串中的实数:
test regex: ([\d]+])\.([\d]+)
test regex flags: g
test string: float1234.58.723c65.183
三、程序代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Javascript regex test page</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GB2312">
<SCRIPT>
/**
* Method 测试正则表达式函数
* @param method 接收到的正则表达式类的方法
*/
function check(method)
{
// 将用户输入的正则表达式的标志转换为小写
form1.flags.value = form1.flags.value.toLowerCase();
// 如果含有不是g、i、m的字符, 则 提示并返回
if ( form1.flags.value.search(/[^g|i|m]/g) != -1 )
{
alert("flags only can be g, i, m");
return;
}
// 利用用户输入的字符串和标志建立正则表达式
var re = new RegExp(form1.regex.value, form1.flags.value);
// 获得并显示生成的正则表达式的字符串形式
destRegex.innerText = re.toString() + ' ';
// 定义 返回值
var cr;
ex = "new RegExp('" + form1.regex.value + "', '" + form1.flags.value + "').";
// 根据用户选择的方法, 进行相应的调用
switch ( method )
{
case '0': // 正则表达式的 exec 方法
cr = re.exec(form1.string.value);
ex = ex + "exec('" + form1.string.value + "')";
break;
case '1': // 正则表达式的 test 方法
cr = re.test(form1.string.value);
ex = ex + "test('" + form1.string.value + "')";
break;
case '2': // 字符串类的 match 方法
cr = form1.string.value.match(re);
ex = "'" + form1.string.value + "'.match(" + re.toString() + ")";
break;
case '3': // 字符串类的 search 方法
cr = form1.string.value.search(re);
ex = "'" + form1.string.value + "'.search(" + re.toString() + ")";
break;
case '4': // 字符串类的 replace 方法
cr = form1.string.value.replace(re);
ex = "'" + form1.string.value + "'.replace(" + re.toString() + ")";
break;
case '5': // 字符串类的 split 方法
cr = form1.string.value.split(re);
ex = "'" + form1.string.value + "'.split(" + re.toString() + ")";
break;
}
// 获得并显示表达式
expression.innerText = ex;
// 获得并显示计算结果的类型
returnType.innerText = typeof(cr);
// 定义结果
var result = '';
if ( cr != null && typeof(cr) == 'object' && cr.length != null ) // 如果计算结果是一个数组, 则取出所有数组的值
{
for ( i = 0; i < cr.length; i++ )
{
result += "array[" + i + "] = '" + cr[i] + "'\n";
}
}
else
if ( cr != null ) // 如果计算结果不为null, 则取出计算结果的值
{
result = cr;
}
// 获得并显示结果
matchResult.innerText = result + ' ';
// 获得并显示正则表达式的lastIndex属性
lastIndex.innerText = re.lastIndex + ' ';
}
</SCRIPT>
</HEAD>
<BODY ALIGN=CENTER>
<FORM NAME="form1" METHOD="post" ACTION="" ALIGN=CENTER>
<TABLE BORDER="1">
<TR>
<TD COLSPAN="2" ALIGN="CENTER">test javascript regex</TD>
</TR>
<TR>
<TD>test regex:</TD>
<TD><INPUT NAME="regex" TYPE="text"></TD>
</TR>
<TR>
<TD>test regex flags:</TD>
<TD><INPUT NAME="flags" TYPE="text" ID="flags"></TD>
</TR>
<TR>
<TD>test string:</TD>
<TD><INPUT NAME="string" TYPE="text"></TD>
</TR>
<TR>
<TD>select method:</TD>
<TD ALIGN="CENTER">
<SELECT NAME="select" onChange="check(this.value)">
<OPTION VALUE="0">exec</OPTION>
<OPTION VALUE="1">test</OPTION>
<OPTION VALUE="2">match</OPTION>
<OPTION VALUE="3">search</OPTION>
<OPTION VALUE="4">replace</OPTION>
<OPTION VALUE="5">split</OPTION>
</SELECT>
<INPUT VALUE='run' onclick="check(form1.select.value)" TYPE=button>
</TD>
</TR>
<TR>
<TD>dest regex:</TD>
<TD STYLE="color:blue" ID=destRegex> </TD>
</TR>
<TR>
<TD>dest expression:</TD>
<TD STYLE="color:blue" ID=expression> </TD>
<TR>
<TR>
<TD>return type:</TD>
<TD STYLE="color:darkred" ID=returnType> </TD>
</TR>
<TR>
<TD>result:</TD>
<TD STYLE="color:red" ID=matchResult> </TD>
</TR>
<TR>
<TD>regex lastIndex:</TD>
<TD STYLE="color:red" ID=lastIndex> </TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
你可以试一下我这个页面,虽然它很粗糙,但是测试正则表达式也足够了:))
一、说明:
1. 我的本意为交流技术.本人水平很菜.因此所贴出的代码中,会有不足之处.
2. 代码可任意修改.如果你觉得你修改过的代码比我的好,可将它贴出,我非常感谢.
3. 我对javascript的规范并不很熟悉.我的经验来自于开发.因此,若你对它有更好的见解,欢迎提出,我非常感谢.
二、测试用例:
1. 检查字符串中是否有非数字的字符:
test regex: \D
test regex flags: g
test string: 1234g56t78
2. 检查字符串中是否有非0-9、a~z、A-Z、_的字符:
test regex: \W
test regex flags: g
test string: i'm a pig! yes I'm!
3. 匹配字符串中的实数:
test regex: ([\d]+])\.([\d]+)
test regex flags: g
test string: float1234.58.723c65.183
三、程序代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Javascript regex test page</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GB2312">
<SCRIPT>
/**
* Method 测试正则表达式函数
* @param method 接收到的正则表达式类的方法
*/
function check(method)
{
// 将用户输入的正则表达式的标志转换为小写
form1.flags.value = form1.flags.value.toLowerCase();
// 如果含有不是g、i、m的字符, 则 提示并返回
if ( form1.flags.value.search(/[^g|i|m]/g) != -1 )
{
alert("flags only can be g, i, m");
return;
}
// 利用用户输入的字符串和标志建立正则表达式
var re = new RegExp(form1.regex.value, form1.flags.value);
// 获得并显示生成的正则表达式的字符串形式
destRegex.innerText = re.toString() + ' ';
// 定义 返回值
var cr;
ex = "new RegExp('" + form1.regex.value + "', '" + form1.flags.value + "').";
// 根据用户选择的方法, 进行相应的调用
switch ( method )
{
case '0': // 正则表达式的 exec 方法
cr = re.exec(form1.string.value);
ex = ex + "exec('" + form1.string.value + "')";
break;
case '1': // 正则表达式的 test 方法
cr = re.test(form1.string.value);
ex = ex + "test('" + form1.string.value + "')";
break;
case '2': // 字符串类的 match 方法
cr = form1.string.value.match(re);
ex = "'" + form1.string.value + "'.match(" + re.toString() + ")";
break;
case '3': // 字符串类的 search 方法
cr = form1.string.value.search(re);
ex = "'" + form1.string.value + "'.search(" + re.toString() + ")";
break;
case '4': // 字符串类的 replace 方法
cr = form1.string.value.replace(re);
ex = "'" + form1.string.value + "'.replace(" + re.toString() + ")";
break;
case '5': // 字符串类的 split 方法
cr = form1.string.value.split(re);
ex = "'" + form1.string.value + "'.split(" + re.toString() + ")";
break;
}
// 获得并显示表达式
expression.innerText = ex;
// 获得并显示计算结果的类型
returnType.innerText = typeof(cr);
// 定义结果
var result = '';
if ( cr != null && typeof(cr) == 'object' && cr.length != null ) // 如果计算结果是一个数组, 则取出所有数组的值
{
for ( i = 0; i < cr.length; i++ )
{
result += "array[" + i + "] = '" + cr[i] + "'\n";
}
}
else
if ( cr != null ) // 如果计算结果不为null, 则取出计算结果的值
{
result = cr;
}
// 获得并显示结果
matchResult.innerText = result + ' ';
// 获得并显示正则表达式的lastIndex属性
lastIndex.innerText = re.lastIndex + ' ';
}
</SCRIPT>
</HEAD>
<BODY ALIGN=CENTER>
<FORM NAME="form1" METHOD="post" ACTION="" ALIGN=CENTER>
<TABLE BORDER="1">
<TR>
<TD COLSPAN="2" ALIGN="CENTER">test javascript regex</TD>
</TR>
<TR>
<TD>test regex:</TD>
<TD><INPUT NAME="regex" TYPE="text"></TD>
</TR>
<TR>
<TD>test regex flags:</TD>
<TD><INPUT NAME="flags" TYPE="text" ID="flags"></TD>
</TR>
<TR>
<TD>test string:</TD>
<TD><INPUT NAME="string" TYPE="text"></TD>
</TR>
<TR>
<TD>select method:</TD>
<TD ALIGN="CENTER">
<SELECT NAME="select" onChange="check(this.value)">
<OPTION VALUE="0">exec</OPTION>
<OPTION VALUE="1">test</OPTION>
<OPTION VALUE="2">match</OPTION>
<OPTION VALUE="3">search</OPTION>
<OPTION VALUE="4">replace</OPTION>
<OPTION VALUE="5">split</OPTION>
</SELECT>
<INPUT VALUE='run' onclick="check(form1.select.value)" TYPE=button>
</TD>
</TR>
<TR>
<TD>dest regex:</TD>
<TD STYLE="color:blue" ID=destRegex> </TD>
</TR>
<TR>
<TD>dest expression:</TD>
<TD STYLE="color:blue" ID=expression> </TD>
<TR>
<TR>
<TD>return type:</TD>
<TD STYLE="color:darkred" ID=returnType> </TD>
</TR>
<TR>
<TD>result:</TD>
<TD STYLE="color:red" ID=matchResult> </TD>
</TR>
<TR>
<TD>regex lastIndex:</TD>
<TD STYLE="color:red" ID=lastIndex> </TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]