【问题标题】:Angular regex to prevent white space after name角度正则表达式以防止名称后出现空格
【发布时间】:2017-09-17 10:40:20
【问题描述】:

我正在尝试在角度控制器中引入正则表达式以进行名称验证。我只能在名称之间使用字母、正斜杠、连字符和一个空格。字符串后不能有任何空格。所以“John-\ Doe”有效,“John-\ Doe-\ Do-\e Doe”有效但“John-\ Doe”,单词之间有2个或更多空格无效,“John-\ Doe”,最后一个单词后一个空格或多个,无效。

这是我目前所拥有的:^[a-zA-Z-]+( [a-zA-Z-]+)*$ 我的正则表达式阻止了名称之间的空格,但我不确定如何验证最后一个单词后的一个空格。我试过: [^a-zA-Z /-]+|[\s]{2,} 这对我不起作用。非常感谢任何指导。

【问题讨论】:

  • 谢谢,但是,所有这些都是在 javascript 中处理的,所以我不能处理任何 ngs,这很不幸。
  • 我不太明白问题出在哪里。您在正则表达式中转义了一个连字符。为什么?你想匹配反斜杠吗?试试/^[a-zA-Z\\-]+(?:\s[a-zA-Z\\-]+)*$/。请显示一个未通过此模式验证的字符串并解释原因。
  • 对我的评论有任何反馈吗?

标签: javascript regex


【解决方案1】:

您可以为用户修复它吗?如果是这样,这是修剪方法的一个很好的应用程序。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

"John Doe ".trim() == "John Doe" // true

总是可以检查提供的内容是否与修剪后的版本相同。虽然这有点草率。如果"John Doe ".trim() == "John Doe"false,那么您知道之前或之后有 个空格。

【讨论】:

  • 您好,我无法为用户修复它,它必须对所有用户通用,因此 .trim() 将无法正常工作,很遗憾。实际上,我认为在我的特定场景中,无法验证单词后的空格。
  • 嗯,好吧。如果以后有机会,我会仔细研究这个问题,看看我能做些什么。祝你好运!
  • 谢谢!非常感谢!
  • @Eddie 看看那个 MDN 链接中的 polly 填充部分。他们用来匹配空格的正则表达式模式可能是您想要的 (/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g)。
  • 谢谢,我试过了,不符合要求。我会再玩一些。我越来越倾向于在我的情况下这是不可能的。
猜你喜欢
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多