【问题标题】:spicy angularjs regex辛辣的angularjs正则表达式
【发布时间】:2023-04-01 19:14:01
【问题描述】:

我一直在研究 angularJs ng-pattern 的正则表达式问题,需要:

  1. 不能为空格
  2. 最少 1 个字符,最多 32 个字符
  3. 不允许使用空格
  4. 可接受的特殊字符(!@#$%&*-+=[]:;',.?)
  5. 答案不区分大小写
  6. 不允许组合
  7. 应修剪答案开头和结尾的空格。

这是我的解决方案,涵盖了除第 6 项以外的所有要求:

([^a-zA-Z0-9!@#$%& *+=[\]:;',.?-])|(^\s*$)

你们有什么想法吗?

【问题讨论】:

  • 你能解释一下“5. 答案不区分大小写”是什么意思吗?
  • 我认为你需要/^(?!\s*$)(?:(?!&#)[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]){1,32}$/。但是,我不知道您的要求是什么。 7 的意思。 ng-pattern 不修剪输入文本。
  • 我唯一想不通的是#6 req。我可以做'string'.trim() 来处理#7。对于 #5,a-zA-Z 涵盖了这一点。
  • 好的,你试过我的建议了吗?见regex101.com/r/AuTmSj/1。也可以是^(?!\s*$)(?!.*&#)[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32}$
  • 天哪,效果很好。谢谢你,维克托。所以,把?!开头的意思是匹配否定?

标签: angularjs regex angularjs-ng-pattern


【解决方案1】:

你可以使用

/^(?!\s*$)(?!.*&#)[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32}$/

请参阅regex demo

详情

  • ^ - 字符串开头
  • (?!\s*$) - 从字符串开始到结尾不允许有 0+ 个空格
  • (?!.*&#) - 不允许在任何 0+ 个字符后使用 &#
  • [a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32} - 1 到 32 个允许的字符:ASCII 数字、字母、空格和一些标点符号/符号
  • $ - 字符串结束。

【讨论】:

  • 嗨 Wiktor,感谢您的帮助,再问一个问题。 #& 组合呢?现在, 组合现在可以工作了,但我尝试添加另一组 (?!#&),但没有成功。
  • 弄清楚。 /^(?!\s*$)(?:(?!|#&)[a-zA-Z0-9!@#$%&*+=[]:;',.?\s- ])+$/,给你。
  • @user1070111 或/^(?!\s*$)(?!.*#&)(?!.*&#)[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32}$/
猜你喜欢
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
相关资源
最近更新 更多