【问题标题】:How to ignore / allow multiple line breaks in a Javascript replace regex如何在 Javascript 替换正则表达式中忽略/允许多个换行符
【发布时间】:2015-08-27 13:34:53
【问题描述】:

我想要做的是清理模糊的输入字段。我的模糊代码功能齐全,但我无法让正则表达式正常工作。我试图允许的所有字符都可以正常工作,除了任意数量的换行符。我尝试了不同的变体和组合,包括 /s、/r 和 /n。

我这样做是因为我想尽可能多地避免真正不属于描述性输入字段的字符。我正在使用实体来 linq 进行数据库输入,这应该可以保护我免受 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, '');
}

有没有办法修复这个正则表达式,使它仍然替换之前和之后的空格,但不在内容内部?

更新**

良好的修剪功能:

function myTrim(x) {
    return x.replace(/^\s+|\s+$/g, '');
}

【问题讨论】:

  • 在哪里?因为我已经尝试过了,它仍然得到完全相同的测试结果。
  • 我认为问题出在myTrimThe regex does not cause any issues.
  • 我将发布 myTrim 函数来展示它的作用,我认为它不会删除除开头和结尾之外的空格,但我愿意尝试删除以进行测试。给我一秒钟。
  • @stribizhev 你是绝对正确的。它解决了这个问题。嗯...我想这解释了为什么我尝试了一切。谢谢你。我将添加修剪功能,您认为有一种方法可以在不破坏此功能的情况下从开头或结尾删除空间吗?给我几分钟来更新它。再次感谢
  • @stribizhev 我还想提一下,您在那里使用的正则表达式测试器比我尝试使用的要好得多。也谢谢你;我以后会用那个。

标签: javascript regex replace line-breaks carriage-return


【解决方案1】:

正如我从一开始就指出的那样,问题不在于正则表达式

/[^a-z0-9\s.,;:'()-]/gi

匹配除空格以外的字符(除了字符类中的其他字符)。

MyTrim 中,您需要删除m,否则$ 将被视为line 结束,^ 被视为line 起始锚点,并且实际上,您只想从字符串的开头和结尾修剪字符串:

function myTrim(x) {
    return x.replace(/^\s+|\s+$/g, '');
}

也可以使用trim()(所有现代浏览器都支持,IE9应该已经支持了)。

【讨论】:

  • 给我一秒钟来测试它,但我相信你是对的。感谢您的快速回复。
  • 谢谢,我已将此标记为正确答案。我什至从不认为我的修剪功能是负责任的。我想继续支持 IE8 至少一段时间。将来我很可能会重新使用 trim()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多