如何编写正则表达式来检查 javascript 中有效的 XML 元素 NCName?
How to write a regex expression to check a valid XML element NCName in javascript?
NCNam表示必须以字母或下划线开头,只能包含字母、数字、下划线、连字符,periods.I试过这样写regex,不过我觉得可能是错了。
if(/^([_]|[a-zA-Z]+[\w\W])$/.test('abc' )) console.log('match')
您的 ^([_]|[a-zA-Z]+[\w\W])$
模式匹配的字符串等于 _
([_]
) 或 (|
) 由 1+ 个字母组成 ([a-zA-Z]+
) 后跟任何字符 ([\w\W]
)。因此,它无法验证您提到的类型的字符串。
您可以使用
/^[a-zA-Z_][\w.-]*$/
参见下面的 regex demo and the graph (source):
详情
^
- 字符串开头
[a-zA-Z_]
- 一个字母或 _
[\w.-]*
- 0 个或多个字母、数字、下划线、点或连字符
$
- 字符串结尾
must start with a letter or underscore
匹配第一个字符[a-z_]
and can only contain letters, digits, underscores, hyphens, and periods
使用包含所有这些的字符 class。注意,字母、数字、下划线一起构成了"word character"的表示,所以可以用\w
代替单独写出来
完整:
/^[a-z_][\w.-]*$/i
NCNam表示必须以字母或下划线开头,只能包含字母、数字、下划线、连字符,periods.I试过这样写regex,不过我觉得可能是错了。
if(/^([_]|[a-zA-Z]+[\w\W])$/.test('abc' )) console.log('match')
您的 ^([_]|[a-zA-Z]+[\w\W])$
模式匹配的字符串等于 _
([_]
) 或 (|
) 由 1+ 个字母组成 ([a-zA-Z]+
) 后跟任何字符 ([\w\W]
)。因此,它无法验证您提到的类型的字符串。
您可以使用
/^[a-zA-Z_][\w.-]*$/
参见下面的 regex demo and the graph (source):
详情
^
- 字符串开头[a-zA-Z_]
- 一个字母或_
[\w.-]*
- 0 个或多个字母、数字、下划线、点或连字符$
- 字符串结尾
must start with a letter or underscore
匹配第一个字符[a-z_]
and can only contain letters, digits, underscores, hyphens, and periods
使用包含所有这些的字符 class。注意,字母、数字、下划线一起构成了"word character"的表示,所以可以用\w
代替单独写出来
完整:
/^[a-z_][\w.-]*$/i