1

我有以下 javascript 不允许用户在字段中输入任何特殊字符,但我确实想破例并允许使用破折号 (-):

function Validate(txt)
{
    txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r]+/g, '');
}

如何修改它以将破折号添加到允许列表中?

4

4 回答 4

5

要允许破折号 ( -),您需要做的就是将 this: 更改txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r]+/g, '');为 this: txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r-]+/g, '');

请注意,破折号被括在方括号中时是一个特殊字符(它表示一个范围),因此它必须放在方括号中的最后。

根据@Tim Pietzcker的评论,您也可以将其转义txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r\-]+/g, '');或放在前面:txt.value = txt.value.replace(/[^-a-zA-Z 0-9\n\r]+/g, '');

于 2012-08-06T13:23:29.880 回答
3

在你的字符类末尾添加一个破折号(作为最后一个字符):

txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r-]+/g, '');
于 2012-08-06T13:22:26.870 回答
1

试试这个:[^a-zA-Z 0-9\n\r-]+

正则表达式测试的酷站点

于 2012-08-06T13:25:54.873 回答
1
txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r-]+/g, ''); 

如果破折号不在决赛中,您也可以试试这个

[^a-zA-Z 0-9\n\-\r]+ //I only test this on rubular

测试

于 2012-08-06T13:27:23.647 回答