3

我正在尝试找到一种解决方案来获取无效的 css 类名。我有:

if (/[^A-Za-z0-9_-]+/.test(classname)) {}

它工作正常,只是当名称以数字开头时它不是“真”,这在 css 类中是不允许的。所以我尝试了很多东西,比如:

/[0-9]+[^A-Za-z0-9_-]+/

它不起作用……有什么想法吗?谢谢!

4

1 回答 1

7

如果基本假设是有效的类名仅包含字母、数字、连字符或下划线但不能以数字开头,那么您可以使用这样的正则表达式作为有效名称:

/^[a-z_-][a-z\d_-]*$/i

也就是说,字符串开头的任何字母或下划线或连字符,后跟零个或多个任何字母、数字、下划线或连字符一直到字符串的末尾。

其中,如果您想测试无效,您可以使用:

if (!/^[a-z_-][a-z\d_-]*$/i.test(classname)) {
   // invalid, do something
}

但是,尽管我相信实现了您所描述的内容,但我认为类名不应该以连字符后跟数字开头。所以也许:

if (!/^([a-z_]|-[a-z_-])[a-z\d_-]*$/i.test(classname)) {
   // invalid, do something
}

请注意,通过标志使正则表达式不区分大小写i然后使用a-zA-Z.

于 2013-07-29T12:50:00.213 回答