如何在Javascript中忽略/允许多个换行符替换正则表达式

How to ignore / allow multiple line breaks in a Javascript replace regex

本文关键字:许多个 换行符 替换 正则表达式 Javascript      更新时间:2023-09-26

我要做的是清理模糊的输入字段。我的模糊代码是完全功能,但我不能得到正则表达式正确工作。除了任何数量的换行符外,我试图允许的所有字符都能正常工作。我尝试了不同的变体和组合,包括/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应该已经支持它了)