【问题标题】:For alphanumeric tags separated by commas?对于用逗号分隔的字母数字标签?
【发布时间】:2016-01-28 06:41:41
【问题描述】:

我是 RegEx 和 JavaScript 的新手,我想知道是否有人知道 RegEx 用于检测输入字段是否包含以下类型的格式:

  • 至少一个可以包含空格的字母数字标签(例如“Test Tag”,但不能包含“Test@Tag”)

  • 每个标签用一个逗号分隔,没有别的,没有空格。 (例如“汽车、车辆、老虎仙人掌、床”)

我的意思是这样的一个例子,这些是 valid 标签:

boy,man,girl,woman,tyrannosaurus rex,lion

这些将是无效标签:

hat, cat, rat, c3po, @gmail

因为标签和无效字符之间有空格。

另外,我将如何计算施加限制的标签?

为澄清而编辑!

【问题讨论】:

  • 引号是字符串的一部分吗?标签中允许使用哪些字符?是否允许使用仅限空白/空格的标签?
  • 抱歉,我现在已经更准确地编辑了 OP。
  • "alphanumeric" 通常不包含空格,但您的示例包含包含空格的“Long Tag”。
  • 嗯,带空格的字母数字字符只允许在实际标签中,而不是在它们之间。

标签: javascript regex


【解决方案1】:

(?:([\w\s]+)(?:,\s*))* 会得到任意数量的以逗号分隔的标签。

(?:([\w\s]+)(?:,\s*)){n} 将匹配 n 个标签,其中 n 是一个整数。

(?:([\w\s]+)(?:,\s*)){0,n} 将匹配 0 到 n 个标签,其中 n 是整数。

为了计算标签,您需要检查捕获的组数。

【讨论】:

  • 如果您不希望标签之间有空格,那么您可以将 "(?:,\s*)" 更改为 ",",这将使您的正则表达式更具可读性...
  • 感谢您的回复。我使用上面给出的示例尝试了您的正则表达式,但无法对其进行验证。
  • 我发布的方式不会包含列表中的最后一个标签(它匹配一个标签后跟一个逗号)。要包含最后一个标签,请使用如下内容: (?:([\w\s]+),)*([\w\s]+)
  • 我意识到我的措辞造成了一些严重的混乱,我已经改写了整个原始帖子以希望找到答案。感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 2012-08-23
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
相关资源
最近更新 更多