Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-用于字母、数字、下划线、逗号分隔标记的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript-用于字母、数字、下划线、逗号分隔标记的正则表达式

Javascript-用于字母、数字、下划线、逗号分隔标记的正则表达式,javascript,regex,Javascript,Regex,我不熟悉正则表达式和javascript,我想知道是否有人知道正则表达式用于检测输入字段是否包含以下类型的格式: 至少有一个字母数字和下划线(u)标记,不能包含空格(例如“test”和“test_u”,但不能包含“test test”) 每个由单个逗号分隔的标记(例如“word1、word2、word_3、word_4”但不是“word1、word2、word_3、word_4”)和任何其他符号无效(如;!“@#%^&*()-+=。> 我的意思的一个例子是,这些标签是有效的: 有些东西1,有些东

我不熟悉正则表达式和javascript,我想知道是否有人知道正则表达式用于检测输入字段是否包含以下类型的格式:

至少有一个字母数字和下划线(u)标记,不能包含空格(例如“test”和“test_u”,但不能包含“test test”)

每个由单个逗号分隔的标记(例如“word1、word2、word_3、word_4”但不是“word1、word2、word_3、word_4”)和任何其他符号无效(如;!“@#%^&*()-+=。> 我的意思的一个例子是,这些标签是有效的:

有些东西1,有些东西2,有些东西,有些东西 这些标签是无效的:

某物1%,某物%2^,!某物%\u某物,(*)something@+

它还应该能够只接受一个标签,因为它也可以接受多个标签


谢谢。

一个标签将由

[a-zA-Z0-9_]+
这是一个字符类,包含大小写的拉丁字母、数字和下划线。通常可以缩短为

\w+
如果您知道您的RE引擎无法处理Unicode(JavaScript就是这种情况),那么现在我将继续使用
\w+

您可以通过选择单个标记和可能为零的逗号+标记来匹配多个标记:

如果要验证完整字符串,应在表达式周围放置字符串开头和字符串结尾的锚点:

^\w+(,\w+)*$

假定您希望同时接受大写和小写字符:

^[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
和单个字符
\u
+
表示字符、组或其前面的字符类中的字符必须至少出现一次或多次

将正则表达式的一部分分组。在本例中,它们将
(用于所需的逗号分隔列表)和迄今为止表达式的重复进行分组。
*
表示(与
+
类似)前面的组可能会出现很多次,但不同的是,
*
使其成为可选的


因此,简言之:此表达式允许标记由至少一个或多个字符组成,范围为a-z、a-z、0-9或字符
,后面可选多个以
开头的标记,指定逗号分隔列表的要求:)

谢谢。我已经看过了!!基本上我已经试过了:/^[a-zA-Z0-9,α-ω-Ω0-9+\,[a-zA-Z0-9,α-ω-Z0-9,α-ω-Ω0-9]/它接受lettes(英语和希腊语),数字,只有在我给出两个或多个标记时才加下划线,如果我只给出一个标记,它就会给我错误。(它工作正常,我想要的任何其他符号都会给我错误)
^[a-zA-Z0-9_]+(,[a-zA-Z0-9_]+)*$