这有什么问题?
var attrRegex = /^.*[[].*[]]$/;
var attrKeys = key.match(attrRegex);
这应该匹配some-var[data-key]
这有什么问题?
var attrRegex = /^.*[[].*[]]$/;
var attrKeys = key.match(attrRegex);
这应该匹配some-var[data-key]
要指定[and ],您应该转义它们\[and \]。
/^.*\[.*\]$/
但是,您当前的正则表达式只会检查是否有 a[后跟 a ],并且a]位于字符串的末尾。它不能验证正好有 1 个左括号[和 1 个右括号],或者括号[]是否平衡。
如果要确保只有 1 对括号,并禁止使用 不允许的换行符.:
/^[^\[\]\n\r\u2028\u2029]*\[[^\[\]\n\r\u2028\u2029]*\]$/
分解:
^
[^\[\]\n\r\u2028\u2029]* # Exclude [, ], and newline characters
# \n\r\u2028\u2029 are originally excluded by .
\[ # Literal [
[^\[\]\n\r\u2028\u2029]*
\] # Literal ]
$
/^.*[[].*[]]$/解释的?在 Firefox 上,根据我的测试,正则表达式被解释为:
^ # Nothing interesting
.* # ...
[[] # Character class containing [
.* # ...
[] # Empty character class!!! NOTHING can be matched
] # Literal ]
$ # ...
不确定其他浏览器,但是当您编写正则表达式时,请正确转义以避免意外行为。
取决于语言,]或者两者[]在字符类中具有特殊含义[]并且必须被转义。