社区
JavaScript
帖子详情
正则,防止用户恶意输入大量回车2
qfljm
2007-08-08 03:39:59
1.替换字符串所有连续2个以上的空行为一个空行.
2.接着替换所有行中行字符在5个以下,行连续3行以上的部分中的回车为空格
如字符串(以下\n是回车符):
a\n
\n
\n
\n
bbbbbbbbbbbbbb\n
aaa\n
aaa\n
aaa\n
aaa\n
处理后应该是
a\n
\n
bbbbbbbbbbbb\n
aaa aaa aaa aaa
...全文
229
5
打赏
收藏
正则,防止用户恶意输入大量回车2
1.替换字符串所有连续2个以上的空行为一个空行. 2.接着替换所有行中行字符在5个以下,行连续3行以上的部分中的回车为空格 如字符串(以下\n是回车符): a\n \n \n \n bbbbbbbbbbbbbb\n aaa\n aaa\n aaa\n aaa\n 处理后应该是 a\n \n bbbbbbbbbbbb\n aaa aaa aaa aaa
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yifuzhiming
2007-08-08
打赏
举报
回复
限制一下输入长度不OK 了
hbhbhbhbhb1021
2007-08-08
打赏
举报
回复
我下面这个代码可能有漏洞,只是给你个正则的思路.你多测测再改改吧!
<textarea id="textarea1" style="width:400;height:400">
a
bbbbbbbbbbbbbb
aaa
aaa
aaa
aaa
</textarea>
<input type="button" onclick=check()>
<script language=javascript>
function check(){
re=/(\r\n(?=(\r\n+)))+/g
var obj=document.getElementById("textarea1")
var str=obj.value
str=str.replace(re,"\r\n");
re=/\r\n((([^\r\n]{1,5})(\r\n|$)){3,})/g
alert(str.match(re))
obj.value=str.replace(re,function(a,b,c){return "\r\n"+b.split("\r\n").join(" ")+"\r\n"})
}
</script>
dexterfar
2007-08-08
打赏
举报
回复
这样就ok了。
<textarea cols="30" rows="20" id="tr_from">
a
bbbbbbbbbbbbbb
aaa
aaa
aaa
aaa
</textarea>
<div><button onclick="Convert();">Convert</button></div>
<textarea cols="30" rows="20" id="tr_to"></textarea>
<script language="javascript">
var switchKey = true;
var dst_str="";
var blankCount = 0;
var shortLineCount = 0;
var shortLineArr = new Array();
function Convert()
{
var f_str = document.getElementById("tr_from").value;
f_str.replace(/^([\d\D]*?)$/gm,f1);
document.getElementById("tr_to").value = dst_str;
switchKey = true;
dst_str="";
blankCount = 0;
shortLineCount = 0;
shortLineArr = new Array();
}
function f1(a,b)
{
if(!switchKey)
{
switchKey = !switchKey;
return;
}
switchKey = !switchKey;
//alert(b.length);
if (/^\s*$/.test(b))
{
if(shortLineArr.length > 2)
{
dst_str = dst_str + shortLineArr.join(" ") + "\n";
shortLineArr = null;
shortLineArr = new Array();
}
else if(shortLineArr.length > 0)
{
dst_str = dst_str + shortLineArr.join("\n") + "\n";
shortLineArr = null;
shortLineArr = new Array();
}
blankCount++;
}
else if(b.length < 5 )
{
if(blankCount < 3 && blankCount > 0)
{
dst_str = dst_str+"\n";
blankCount = 0;
}
else if(blankCount >= 3)
{
dst_str = dst_str+"\n";
blankCount = 0;
}
shortLineArr.push(b);
shortLineCount++;
}
else
{
if(blankCount < 3 && blankCount > 0)
{
dst_str = dst_str+"\n";
blankCount = 0;
}
else if(blankCount >= 3)
{
dst_str = dst_str+"\n";
blankCount = 0;
}
shortLineCount=0;
blankCount=0;
if(shortLineArr.length > 2)
{
dst_str = dst_str + shortLineArr.join(" ") + "\n";
shortLineArr = null;
shortLineArr = new Array();
}
else if(shortLineArr.length > 0)
{
dst_str = dst_str + shortLineArr.join("\n") + "\n";
shortLineArr = null;
shortLineArr = new Array();
}
}
if(!(/^\s*$/.test(b) || b.length < 5))
{
dst_str = dst_str + b + "\n";
}
}
</script>
qfljm
2007-08-08
打赏
举报
回复
没处理第二种情况啊
btbtd
2007-08-08
打赏
举报
回复
<script type="text/javascript">
//<![CDATA[
var str =
[
'a\n'
,'\n'
,'b\n'
,'\n'
,'c\n'
,'\n'
,'\n'
,'\n'
,'d\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'e\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'f\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'g\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'\n'
,'h\n'
].join("");
document.write("str: \n", str, "<hr/>");
document.write("fClearLine(str, 0): \n", fClearLine(str, 0), "<hr/>");
document.write("fClearLine(str, 1): \n", fClearLine(str, 1), "<hr/>");
document.write("fClearLine(str, 2): \n", fClearLine(str, 2), "<hr/>");
document.write("fClearLine(str, 3): \n", fClearLine(str, 3), "<hr/>");
document.write("fClearLine(str, 4): \n", fClearLine(str, 4), "<hr/>");
document.write("fClearLine(str, 5): \n", fClearLine(str, 5), "<hr/>");
document.write("fClearLine(str, 6): \n", fClearLine(str, 6), "<hr/>");
function fClearLine(Source, iProtect, bDebug)
{// shawl.qiu code : return string || void return
var bStr = false;
if(!iProtect) iProtect = 0;
if(Source.constructor==String) Source = [Source], bStr = true;
var sPtr = "[\\s]*?\\n";
var sFianlPtr = fRepeatString(sPtr, iProtect);
var TempAr = ["(\\n", sFianlPtr, ")", "[\\s]*\\n"];
var TempRe = new RegExp(TempAr.join(""), "g");
Source[0] = Source[0].replace(TempRe, "$1");
if(bDebug)
{
document.write("sFianlPtr: ", sFianlPtr, "<br/>");
}
if(bStr) return Source[0];
function fRepeatString(sIpt, iLen)
{// shawl.qiu script
if(!sIpt)return "";
if(!iLen&&iLen!==0) iLen = 2;
iLen -= 0;
return new Array(iLen+1).join(sIpt);
} // end function fRepeatStr
} // end function fClearLine(Source, iProtect, bDebug)
//]]>
</script>
ASP超级链接和HTML函数
正则
表达式 修正版
这样可以
防止
恶意
的JavaScript代码被执行。 最后,`ClearHTMLCode`函数是为了清除HTML代码,其
正则
表达式`<[^>]*>`匹配所有开始于`但不包括`>`的标签,从而删除HTML元素。 这些函数在处理
用户
输入
或者从外部源获取...
【Python】
正则
表达式
在处理文本数据时,无论是验证
用户
输入
、从日志文件中提取特定信息、解析配置文件、进行数据清洗,还是进行复杂的字符串替换和分割,
正则
表达式(Regular Expression,简称 Regex 或 Regexp)都是一个极其强大和灵活...
【JavaWeb】
正则
表达式
现实中, 检索是非常常见的,为了加快检索速度, 引出了
正则
表达式,
正则
表达式是一种强大的文本模式匹配工具,可以用来搜索、识别和提取文本中的特定模式.一个
正则
表达式,就是用某种模式去匹配字符串的一个公式。很多...
【微软技术栈】C#.NET 中的
正则
表达式最佳做法
.NET 中的
正则
表达式引擎是一种功能强大而齐全的工具,它基于模式匹配(而不是比较和匹配文本)来处理文本。 在大多数情况下,它可以快速、高效地执行模式匹配。 但在某些情况下,
正则
表达式引擎的速度似乎很慢。 在...
正则
表达式:文本处理的强大工具
正则
表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re模块使Python拥有
正则
表达式功能。
JavaScript
87,992
社区成员
224,698
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章