【问题标题】:Regular expression to remove certain characters after nth index value在第 n 个索引值之后删除某些字符的正则表达式
【发布时间】:2015-06-16 10:41:10
【问题描述】:

我们正在开发一个表单验证代码 sn-p,其中 jQuery 屏蔽插件已用于强制对用户输入进行验证。

与邮政编码字段一起使用的掩码模式是 99999?-9999,其中“?”之后的所有内容都是可选的。

当用户使用 chrome 中的自动填充功能填写表单时会出现问题[i.e.双击输入字段并选择值] 并提交表单。提交表单时,邮政编码值为 23455-____,其中还包括掩码模式字符,即连字符和下划线。

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

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

任何帮助都会非常有帮助。

【问题讨论】:

  • 到目前为止你有什么?你能举几个有效和无效邮政编码的例子吗(特殊和不寻常的情况)
  • 在输入函数上使用,然后将字符串放入 javascript 变量中,然后使用 str_replace 删除连字符和下划线
  • 作为掩码模式,第一个邮政编码必须包含至少 5 位数字,之后一切都是可选的。屏蔽插件可防止用户输入少于 5 位的任何内容。
  • @sonamgupta 你是对的,但我正在努力寻找一个在第 5 个索引项之后删除特定字符的正则表达式
  • str = str.replace(/_|-/g, "");在这里使用这个 str 是你的字符串

标签: javascript jquery regex


【解决方案1】:

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

您可以使用以下正则表达式来做到这一点:

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

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

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

【讨论】:

  • 前五个字符并不总是数字。这取决于应用在邮政编码上的掩码模式。例如。加拿大邮政编码是字母数字。所以,我需要先阅读掩码模式以获得“?”的索引。然后将此索引传递给正则表达式以删除索引值之后的特殊字符。为了克服这种组合,我正在寻找一个在第 5 个索引值之后返回字符串的正则表达式模式。例如如果字符串为“23345-____”,则该正则表达式应在第 5 位后搜索“-”和“”。
【解决方案2】:

您可以像这样简单地从字符串中去除尾随的下划线或破折号:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2015-07-26
    • 2021-01-05
    • 1970-01-01
    • 2021-03-15
    相关资源
    最近更新 更多