【问题标题】:AngularJs ng-pattern regexAngularJs ng-模式正则表达式
【发布时间】:2017-09-09 14:08:47
【问题描述】:

我正在努力为 angular ng-pattern 编写正则表达式来验证表单输入字段。下面是可能输入的示例

有效输入:

@tag1,@tag2,@tag3
@tag1, @tag2, @tag3
@tag1

无效输入:

@tag 1
@tag 1, @tag2, @tag  -3
@ta g1, @t ag2

基本上它应该允许逗号和逗号空格,但不允许标签之间有空格。

我编写了一个匹配所有无效输入的正则表达式,但是当我在 ng-pattern 中使用它时,它并没有进行正确的验证。

正则表达式内置:/((^, @|@\s+)|@*[a-zA-Z0-9]* +[a-zA-Z0-9])/g 链接:https://regex101.com/r/HMVdLD/1

非常感谢任何帮助!

【问题讨论】:

  • 为什么要使用匹配 invalid 输入的正则表达式?
  • 我尝试否定上述表达式。这似乎也不起作用。
  • 看,/^@[a-zA-Z0-9]+(?:,\s*@[a-zA-Z0-9]+)*$/ 应该匹配所有有效的,而且要容易得多。将其放入ng-pattern 属性值(ng-pattern="/pattern/")中。前导/尾随空格呢?您希望它在您的输入字段中被允许吗?

标签: javascript angularjs regex ng-pattern


【解决方案1】:

我建议定义一个模式来匹配有效的输入,比如

ng-pattern="/^@[a-zA-Z0-9]+(?:,\s*@[a-zA-Z0-9]+)*$/"

regex demo

如果您想禁止前导和尾随空格,请添加 ng-trim="false"

模式详情

  • ^ - 字符串开头
  • @ - 文字 @ 符号
  • [a-zA-Z0-9]+ - 1+ 字母数字
  • (?:,\s*@[a-zA-Z0-9]+)* - 0+ 个序列:
    • , - 逗号
    • \s* - 0+ 个空格
    • @[a-zA-Z0-9]+ - 同上
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    相关资源
    最近更新 更多