Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript替换正则表达式中忽略/允许多个换行符_Javascript_Regex_Replace_Line Breaks_Carriage Return - Fatal编程技术网

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

如何在Javascript替换正则表达式中忽略/允许多个换行符,javascript,regex,replace,line-breaks,carriage-return,Javascript,Regex,Replace,Line Breaks,Carriage Return,我要做的是清理blur上的输入字段。我的模糊代码是完全功能性的,但我不能让正则表达式正常工作。我尝试允许的所有字符都正常工作,除了任何数量的换行符。我尝试了包括/s、/r和/n的不同变体和组合 我这样做是因为我想尽可能地避免在描述性输入字段中出现很多不属于它的字符。我正在使用entity to linq进行数据库输入,这应该可以保护我免受sql注入攻击,但我仍然希望限制字符以增加安全性。我允许撇号,但这应该是下面正则表达式中列出的允许字符的唯一潜在威胁 一旦我得到正则表达式,我还将使用相同的代码

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

我这样做是因为我想尽可能地避免在描述性输入字段中出现很多不属于它的字符。我正在使用entity to linq进行数据库输入,这应该可以保护我免受sql注入攻击,但我仍然希望限制字符以增加安全性。我允许撇号,但这应该是下面正则表达式中列出的允许字符的唯一潜在威胁

一旦我得到正则表达式,我还将使用相同的代码块替换on-paste

这是我还原回的javascript方法

function CleanSentenceInput(AlphaNumString) {
    input = AlphaNumString;
    var CleanInput = input.replace(/[^a-z0-9\s.,;:'()-]/gi, '');
    CleanInput = myTrim(CleanInput);
    return CleanInput;

}
有没有办法通过修改这个replace regex来允许任意数量的换行

测试输入:

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+$/gm, '');
}
有没有办法修复这个正则表达式,使它仍然可以替换前后的空格,但不能替换内容内部的空格

更新**

良好的微调功能:

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, '');
}

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

它在哪里?因为我已经尝试过了,但仍然得到了完全相同的测试结果。我相信问题在于
myTrim
。我将发布myTrim函数来展示它的功能,我认为除了开始和结束外,它不会删除空白,但我愿意尝试删除以进行测试。再给我一点时间。@Stribizov你完全正确。它解决了这个问题。隐马尔可夫模型。。。我想这就解释了为什么我什么都试过了。非常感谢。我将添加修剪功能,您认为有没有一种方法可以在不破坏此功能的情况下从开头或结尾移除空间?给我几分钟更新一下。谢谢again@stribizhev我还想提到,您在那里使用的regex测试仪远远优于我尝试使用的测试仪。也谢谢你;我以后会用这个。给我一点时间测试一下,但我相信你是对的。谢谢你的快速回复。谢谢,我已将此标记为正确答案。我甚至从未想过我的修剪功能是有责任的。我想至少再支持IE8一段时间。将来我很可能会回到使用trim()。