当前位置: 首页 > 知识库问答 >
问题:

由逗号分隔的正则表达式重复模式

充修能
2023-03-14

我在Javascript中有以下正则表达式:

/\w{1,}\s*\w{1,}/  

这将检查字符串是否至少有两个大于1个字符的单词。

前-

asd fgh - Valid  
a b d dfd - Valid  
xscxs - Invalid

我现在有了一个新的要求,我试图实现它,但不能正确执行。

新要求:能够有一个逗号分隔的相同类型的输入列表。不能以逗号结尾。根据上述规则,每个项目必须有效
如果没有逗号,则其也是有效的
所有字符都是字母,没有数字/特殊字符

Valid:  HOH vfdffd,dsfds dfgd,UIU fgfd  
Valid:  JOI JOIO  
Invalid:  QASW fgdfg,  
Invalid:  sdfds,1234 dfgdfg  
Invalid:  JKJ,ABCD  

共有2个答案

柴兴贤
2023-03-14
.regex(/^(?:(?![0-9]{4}|[a-zA-Z]{4})[a-zA-Z0-9]{4})(?:(?:\b\,)(?![0-9]{4}|[a-zA-Z]{4})[a-zA-Z0-9]{4})*$/)

Explanation:

(?:\b\,) -> Match with a , at the beginning of the string only if its preceded by a word boundary
(?:(?![0-9]{4}|[a-zA-Z]{4})[a-zA-Z0-9]{4}) -> Match a string with letter and digits only if dont have 4 digits ow 4 letters
章振
2023-03-14

您可以将第一个要求的模式指定为:(?:\s[a-zA-Z])以匹配1个字母字符,然后匹配1个空格序列和一个或多个单词字符,然后在另一个组中用逗号重复该模式:

/^[a-z]+(?:\s[a-z]+)+(?:,[a-z]+(?:\s[a-z]+)+)*$/i

请参阅regex演示(演示中的所有内容都替换为空格,因为输入是一个多行字符串)。

如果允许多个空格,请将其替换为。

详情:

  • ^-字符串的开始
  • [a-z]-1个字母
  • (?:\s[a-z])-1个或多个序列(即空格是必需的)
    • \s-空格(添加以匹配1个或多个点)
    • [a-z]-1个字母
    • ,-逗号
    • 参见上文

 类似资料:
  • 问题内容: 我需要一个正则表达式模式,该模式只接受输入字段的逗号分隔值。 例如:。它应该拒绝像这样的值: 我还需要接受分号分隔的值。有人可以为此建议一个正则表达式模式吗? 问题答案: 最简单的形式: 演示在这里。 我只需要限制字母。我怎样才能做到这一点 ? 使用正则表达式(包括示例Unicode字符范围): 演示在这里。 用法示例: Java演示。

  • 问题内容: 在我的一个项目中,我不得不处理逗号分隔文件(CSV)。我必须基于逗号来拆分数据,而忽略引号内的逗号(即),因此我使用了另一个堆栈溢出问题(Java:拆分逗号分隔的字符串但忽略了引号中的逗号)中提到的表达式。一切工作都很好,直到最近我才注意到它不适用于下面提到的一种特定情况。 我需要在逗号上拆分的数据字符串为: 以我的理解为基础 拆分后的数据应返回一个大小为10的数组,该数组的后两个索引

  • 我使用以下正则表达式来验证单个电子邮件地址。如何使此正则表达式接受以逗号分隔的电子邮件地址列表? 我使用razor视图将正则表达式放置在输入标记中:

  • 我想将一个长数组值转换为一个特定格式的字符串。 例如,将longArray={0,1,2,3}转换为字符串0.1.2.3 我可以执行arrays.ToString(longArray),它将返回[0,1,2,3]。 现在必须将字符串[0,1,2,3]转换为0.1.2.3

  • 我需要一个. Net(C#)正则表达式来匹配逗号分隔的数字列表,如果有逗号作为最后一个字符,这些数字将不匹配 我已经找到了这个Regex但是当结尾有逗号时匹配 什么是符合这种模式的正则表达式模式? 编辑:为清晰起见添加了1个示例,正确答案适用于

  • 问题内容: 我的文字如下: 谁能告诉我我必须使用哪些正则表达式分度数才能获得以下结果: 我在这里阅读Sun教程,直到“ Matcher类的方法”为止,但我仍然茫然。谢谢! 如果是这样,那将很容易,但是不幸的是,事实并非如此。有任何想法吗? 问题答案: 您可以直接使用split()方法,如下所示: (请注意,这将返回长度为5的数组,第一个位置为空字符串) 或者,如果您想使用模式/匹配器,可以这样做: