正则表达式删除第n个索引值

时间:2015-06-16 10:41:11

标签: javascript jquery regex

我们正在开发一个表单验证代码段,其中jQuery masking插件已用于强制验证用户输入。

与邮政编码字段一起使用的屏蔽模式是 99999?-9999 ,其中所有内容在"?"之后是可选的。

当用户使用chrome中的自动填充功能填充表单时出现问题[即。双击输入字段并选择值]并提交表单。在表单提交时,邮政编码值为 23455 -____ ,其中包括屏蔽模式字符,即hypen&下划线。

使用自动填充功能后,请参阅附带的屏幕截图。 http://inft.ly/3mmtNdA

如果可选字符包含Hypen( - )和下划线(_),则需要在将其提交给服务器之前将其删除。我正在尝试使用正则表达式,但没有找到任何在第5个索引项后检查特定字符的内容,然后删除它们。

任何帮助都会非常有用。

2 个答案:

答案 0 :(得分:2)

由于前五个字符是数字,因此可以捕获捕获组中的字符。检查这些是否后跟( - )或(_)并替换它们。

您可以使用以下正则表达式执行此操作:

str.replace(/(\d{5})[\-_](.*)/, '$1$2');

首先创建一个捕获组以保存前五位数(\d{5})。然后,您将查找要删除的字符[\-_]。之后,您将捕获字符串(.*)的其余部分。

现在,您可以使用捕获组'$1$2'替换字符串,然后就完成了。

答案 1 :(得分:1)

您可以简单地从字符串中删除尾部下划线或短划线,如下所示:

var str = '12345-_____';
str.replace(/[-_]+$/, ''); // "12345"

var str = '12345-123__';
str.replace(/[-_]+$/, ''); // "12345-123"