【问题标题】:Regex not allow empty spaces at the end [duplicate]正则表达式末尾不允许有空格[重复]
【发布时间】:2020-03-20 22:32:22
【问题描述】:

我的目标是改进我的正则表达式。正则表达式需要除一些特殊字符外的所有内容,开始时不允许空格,最后不允许空格。

^(?!\s*$)[^-\s][^`=~!@#$%^&*()[\]\/\\{}"|<>?]{3,100}$

例子:

word 有效

word [space]无效

[space] word无效

word w 有效

我的正则表达式除了最后的空白之外什么都做了。如何在正则表达式末尾添加此条件以禁止空格?

【问题讨论】:

  • +{3,100} 之后没有意义。
  • @Barmar 指出,我将删除它
  • 出于好奇,这是干什么用的?我注意到它允许任意 unicode 但不允许使用通用标点符号,这似乎不寻常

标签: javascript regex


【解决方案1】:

您可以在末尾添加另一个负前瞻以禁止空格:

^(?!\s*$)(?![^]*\s$)(?![-\s])[^`=~!@#$%^&*()[\]\/\\{}"|<>?]{3,100}$

(?![^]*\s$) 是否定的前瞻性断言您的正则表达式不允许在末尾有空格。

RegEx Demo

【讨论】:

  • (?!.*\s$) 是对可能匹配多行文本的通用模式的错误建议。必须是(?![^]*\s$)(?![\s\S]*\s$)
  • 好点 Wiktor,已编辑。
猜你喜欢
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 2016-04-23
相关资源
最近更新 更多