我是regex和javascript的新手,我想知道是否有人知道正则表达式将用于检测输入字段是否包含以下类型的格式:
至少一个不能包含空格的字母数字和下划线(_)标记(例如“test”和“test_”但不包含“test test”)
每个标记用单个逗号分隔(例如“word1,word2,word_3,_word_4”但不包含“word1,word2,word_3,_word_4”)以及任何其他符号无效(如:!“'@#%^ &安培; *() - + =&GT。
我的意思是这个例子,这些都是有效的标签:
something1,something_2,something_something,事 这些将是无效的标签:
!something1%,东西% 2 ^,东西%_&安培;东西,(*)的东西@ +
它也应该只能接受一个标签,也可以作为倍数标签!!
感谢。
答案 0 :(得分:2)
假设您要接受大写和小写字符:
^[a-zA-Z0-9_]+(,[a-zA-Z0-9_]+)*$
上述网站提供有关正则表达式的重要信息,我建议您仔细阅读。现在简单解释一下:
^
表示字符串的开头,因此其前没有其他(可能无效的)字符。 [
和]
之间是一个字符类:指定可能跟随的字符。 [ABC]
例如表示A,B或C.您还可以指定[A-E]
等范围,即A,B,C,D或E.
在上面的正则表达式中,我指定范围a
到z
,A
到Z
(大写),0
到9
和单个字符_
。 +
表示前面的字符类中的字符,组或字符必须至少出现一次或多次。
(
和)
组是正则表达式的一部分。在这种情况下,他们将,
(对于您想要的逗号分隔列表)和到目前为止重复的表达式进行分组。 *
表示(+
)前面的组可能会出现多次,但区别在于*
使其成为可选项。
因此,简而言之:此表达式允许标记包含 az , AZ ,范围内的至少一个或多个字符> 0-9 或字符_
,可选地后跟更多以,
开头的标记,指定逗号分隔列表的要求:)
答案 1 :(得分:1)
单个标签将与
匹配[a-zA-Z0-9_]+
这是一个包含大写和小写拉丁字母以及数字和下划线的字符类。这通常可以缩短为
\w+
如果您知道您的RE引擎将无法处理Unicode(这是JavaScript的情况)。不过,我现在继续\w+
。
您可以通过选择单个标记和可能为零的逗号 + 标记来匹配多个标记:
\w+(,\w+)*
如果你想验证一个完整的字符串,你应该在表达式周围放置字符串的开头和字符串结尾的锚点:
^\w+(,\w+)*$