【问题标题】:Regarding regex implementation关于正则表达式的实现
【发布时间】:2016-05-15 00:00:24
【问题描述】:

我正在尝试为以下要求实施 2 个正则表达式。

  1. 合法字符:A-Z、a-z、0-9、连字符、撇号和单个空格。

    非法字符:前导空格、尾随空格、相邻空格和其他符号。长度:最小 1 最大 35

为此,我尝试按如下方式实现正则表达式"^[ A-Za-z0-9'-]*$"。我未能实现尾随空格、相邻空格以及最小和最大长度。

  1. 合法字符: 来自“#x21;”的可打印字符到“#x7E;”和单一的空间。

非法字符:前导空格、尾随空格、相邻空格。长度:最小 1 最大 35

为此,我尝试了"^(?> *)[\x21-\x7F]+$"。我不知道如何实现尾随空格、相邻空格以及最小和最大长度。

谢谢。

【问题讨论】:

  • 这是第一个要求?:^(?!\s)(?!.*\s\s)[ A-Za-z0-9'-]*(?<!\s)$
  • 如果将 (?!.*\s\s)[ A-Za-z0-9'-]* 替换为 (\s(?!\s)|[A-Za-z0-9'-])* 可能会快一点。我没有测试两者的性能。
  • 感谢您的意见。但我认为它不能验证长度。
  • Ups... 是的... 将 * 替换为 {1,35}
  • 我尝试了你为第二个提供的变化。 "^(?!\s)(?!.*\s\s)[\x20-\x7F]{1,35}(?

标签: c# regex


【解决方案1】:

首先你可以使用这个:

^(?=^.{1,35}$)(?!\s)(?!.*\s\s)[ A-Za-z0-9'-]*(?<!\s)$

对于第二个,只需将中产阶级从 [ A-Za-z0-9'-] 更改为 [ \x21-\x7E]

^(?=^.{1,35}$)(?!\s)(?!.*\s\s)[ \x21-\x7E]*(?<!\s)$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多