【问题标题】:Blocking Vertical Spaces at the end of a String - Regex在字符串末尾阻止垂直空格 - 正则表达式
【发布时间】:2016-02-28 20:02:39
【问题描述】:

我真的很难让一个简单的正则表达式工作。我知道有很多关于这方面的 Q/A,但我似乎找不到合适的解决方案。

我不允许任何特殊字符,中间有垂直空格(按回车键完成)和字符串末尾的垂直空格,仅此而已。

这是我的正则表达式:

/^[^"#$%&\/:\v?\^_|£§°ÀÇÈÉÌÒÙ€]+$/

它的工作原理是我不想在其间允许特殊字符和垂直空格,但它不适用于字符串末尾的垂直空格。

我试过了:

/^[^"#$%&\/:\v?\^_|£§°ÀÇÈÉÌÒÙ€]+[^\v]$/

但它不会起作用。

如果字符串末尾不允许有垂直空格,我该如何让它工作?

对不起,如果我的问题有点小。 提前致谢。

【问题讨论】:

  • 你基本上想删除换行符。 string = string.replace(/[\r\n]+/g, '\n')

标签: javascript regex


【解决方案1】:

我认为你的方法是错误的。不要列出所有禁止的字符,而是列出所有允许的字符。从以下内容开始:

/^[a-zA-Z0-9 ]+$/

并添加您最终需要的其他字符。

注意:简写字符类 \v 在 Javascript 中不存在。

【讨论】:

  • 它可以工作,除了它仍然接受一个最终的垂直空间。如果我放其中 2 个,则该字符串将不被接受。
  • @AndreaM16:这是因为您正在为 pcre (PHP) 设计的正则表达式测试器中测试模式,其中锚点 $ 可以匹配字符串的结尾或最后一行的结尾,后跟换行符。但 Javascript 并非如此。用真实的代码测试一下。
  • @AndreaM16:请注意,您可以使用 D 修饰符获得与 pcre 相同的默认行为。
  • 您好,客户希望我们允许除以下字符之外的所有字符:# $ % & / : ? \ ^ _ | ¢ § ° À Ç È É Ì Ò Ù € * VerticalSpace。到目前为止,我尝试了^[^#$%&/:?\^_|¢§°ÀÇÈÉÌÒÙ€*\v]+$,它的工作原理是再次禁止垂直空间。你知道我该如何解决这个问题吗?我知道遵循您的方法会更明智,但是您知道客户的想法。
  • 正如我之前解释的那样,该模式已经不允许垂直空格,并且 Javascript 中不存在速记字符类 \v。之后,最终的角色列表不再是编程问题,而是与客户的沟通和教学问题。你应该问他并找出他为什么要排除这个特定的字符列表(背后的想法是什么?为什么ÀÇÈÉÌÒÙ而不是Ê?为什么:而不是;?...)。跨度>
猜你喜欢
  • 2010-11-23
  • 2022-01-08
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多