正则表达式必须满足以下条件:
09XYAB[]-
-
”之后,我找不到空格,“]
”或“[
”我已经写了这个表达式“([-(?!\[|\]|\ )09XYAB\[\]\-]){0,}
”,但我一直收到错误结果,让我们说这个测试字符串为“ABY-Ab[A0-]
”。
答案 0 :(得分:0)
使用此正则表达式^([09XYAB\[\]]|(-(?![ \[\]])))+$
此部分[09XYAB\[\]]
抓住09XYAB[]
此部分(-(?![ \[\]])))
抓住-
和[]
或空格不能成为下一个符号
答案 1 :(得分:0)
如何:
^(?!-[\[\]])[09XYAB\[\]-]+$
<强>解释强>
The regular expression:
(?-imsx:^(?!-[ \[\]])[09XYAB\[\]-]+$)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
^ the beginning of the string
----------------------------------------------------------------------
(?! look ahead to see if there is not:
----------------------------------------------------------------------
- '-'
----------------------------------------------------------------------
[ \[\]] any character of: ' ', '\[', '\]'
----------------------------------------------------------------------
) end of look-ahead
----------------------------------------------------------------------
[09XYAB\[\]-]+ any character of: '0', '9', 'X', 'Y', 'A',
'B', '\[', '\]', '-' (1 or more times
(matching the most amount possible))
----------------------------------------------------------------------
$ before an optional \n, and the end of the
string
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
答案 2 :(得分:0)
@ burning_LEGION的答案正确提供了解决方案的前半部分。这个答案提供了下半年;验证匹配的括号对,即使它们是嵌套的。 @Sniffer是正确的,单个正则表达式无法完成。但是,正确解析嵌套结构可以使用JavaScript正则表达式从内到外解析相当容易...
由于JavaScript正则表达式语法不提供递归表达式,因此当括号嵌套时,不可能匹配最外面的匹配括号对。但是,编写一个正确匹配最里面的匹配括号对的正则表达式非常容易:
/\[[^[\]]*\]/g
下面测试的JavaScript函数验证了可能具有嵌套括号对的字符串的正确括号对匹配。它是通过使用上面的正则表达式从内向外迭代地剥离匹配的最里面的括号对来实现的。一旦删除了所有(可能是嵌套的)匹配对,任何剩余的括号字符都表示该字符串具有无效的括号匹配。
function validBracketNesting(text) {
// Regex to match innermost matching brackets
var re_innerbrackets = /\[[^[\]]*\]/g;
// Iterate stripping matching bracket pairs from inside out.
while (text.search(re_innerbrackets) !== -1) {
text = text.replace(re_innerbrackets, '');
} // All (possibly nested) matching bracket pairs removed.
// Any remaining bracket indicates invalid bracket pairing.
return (text.match(/[[\]]/)) ? false : true;
}