如何在Javascript中忽略/允许多个换行符替换正则表达式
How to ignore / allow multiple line breaks in a Javascript replace regex
我要做的是清理模糊的输入字段。我的模糊代码是完全功能,但我不能得到正则表达式正确工作。除了任何数量的换行符外,我试图允许的所有字符都能正常工作。我尝试了不同的变体和组合,包括/s,/r和/n。
我这样做是因为我想防止尽可能多的不属于描述性输入字段的字符。我使用实体链接数据库输入,这应该保护我免受sql注入攻击,但我仍然想限制字符以增加安全性。我允许撇号,但这应该是下面正则表达式中列出的允许字符的唯一潜在威胁。
一旦我得到正则表达式,我也将使用相同的代码块替换粘贴。
这是我的javascript方法,我恢复到。
function CleanSentenceInput(AlphaNumString) {
input = AlphaNumString;
var CleanInput = input.replace(/[^a-z0-9's.,;:'()-]/gi, '');
CleanInput = myTrim(CleanInput);
return CleanInput;
}
是否有一种方法允许任何数量的换行通过修改这个替换正则表达式?
测试输入:aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
cccccccccccccccc
cccccccccccccccc
测试结果:aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc
预期结果:
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
cccccccccccccccc
cccccccccccccccc
更新**事实证明,我正在使用的修剪功能正在删除换行符。下面是函数:
坏的修剪功能:
function myTrim(x) {
return x.replace(/^'s+|'s+$/gm, '');
}
是否有一种方法来修复这个正则表达式,使它仍然取代空白之前和之后,但不是在内容里面?
更新* *
Good Trim Function:
function myTrim(x) {
return x.replace(/^'s+|'s+$/g, '');
}
正如我从一开始就指出的,问题不在于正则表达式,因为
/[^a-z0-9's.,;:'()-]/gi
匹配空格以外的字符(除了字符类中的其他字符)。
在MyTrim
中,您需要删除m
,因为否则,$
被视为行结束,^
被视为行开始锚,实际上您只想从开始和结束修剪字符串:
function myTrim(x) {
return x.replace(/^'s+|'s+$/g, '');
}
也可以使用trim()
(所有现代浏览器都支持它,IE9应该已经支持它了)
相关文章:
- JQuery:向多个匹配结果添加换行符的最简单方法
- 用换行符替换每N个空白
- regex替换多个后续换行符
- 正则表达式在换行符 前面有两个空格
- javascript 正则表达式中回车符、换行符和多个空格的匹配
- 在 JavaScript 字符串 (regex) 中插入多个换行符 (CodeMirror)
- JavaScript正则表达式,用于匹配换行符后的第一个字母
- 在 js 上使用正则表达式更改除第 n 个换行符之外的每个换行符
- 显示文本中的x个字符,当单击href时,用换行符显示其余字符
- 如何在每80个字符后插入换行符
- 获取第一个单词和换行符之间的内容
- 正则表达式,搜索多个换行符
- 用正则表达式替换两个以上的换行符
- 表单验证脚本使用正则表达式检查跨换行符的多个关键字
- Javascript将换行符减少到两个
- 如何在Javascript中忽略/允许多个换行符替换正则表达式
- 如何清理多个空格/换行符
- 用单个换行符替换多个换行符,并尊重换行符之间的文本
- 文本区域最多允许2个换行符
- 如何在javascript中每三个字符添加一个换行符