2015-08-27 39 views
2

我想要做的是清理模糊输入字段。我的模糊代码功能完全正常,但我无法使正则表达式正常工作。我试图允许的所有字符除了任何换行符之外都能正常工作。我已经尝试过包含/ 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, ''); 
} 
+0

它在哪里?因为我已经尝试过了,它仍然会得到完全相同的测试结果。 –

+2

我认为问题出在'myTrim'上。 [正则表达式不会引起任何问题。](https://regex101.com/r/hG0qZ0/1) –

+0

我将发布myTrim函数来显示它的功能,我不认为它会除去开头和结束,但我愿意尝试删除测试。你稍等一会儿。 –

回答

1

当我从一开始的问题是不是与正则指出,因为

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

比赛,除空白(文字旁角色类中的其他人)。

MyTrim您需要删除m,否则,$被视为线末和^线开始锚,其实你只希望从它的开头和结尾修剪字符串:

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

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

+0

给我一秒钟来测试它,但我相信你是对的。感谢您的快速回复。 –

+1

谢谢,我已经标记为正确的答案。我从来没有考虑过我的修剪功能。我想继续支持IE8至少一段时间。在将来,我很可能会回头使用trim()。 –