Regex仅用于方括号中的数字

Regex仅用于方括号中的数字,regex,Regex,我想检查是否所有方括号内都只包含数字、逗号和破折号。怎么做 例如: fsf[sdff0977sf0]sda[989,-]不正常 我不知道你在用哪种语言。下面是一个grep解决方案: $ grep -Eo '\[([0-9]|,|-)+\]' file.txt [989,-] [,,--9770-,875] [989,-] 在java中,您可以将此模式与matches方法结合使用: [^\\[]*(?:\\[[0-9,-]*][^\\[]*)*+ 它从字符串的开始到结束检查方括号中的所有部分

我想检查是否所有方括号内都只包含数字、逗号和破折号。怎么做

例如:

fsf[sdff0977sf0]sda[989,-]
不正常


我不知道你在用哪种语言。下面是一个
grep
解决方案:

$ grep -Eo '\[([0-9]|,|-)+\]' file.txt 
[989,-]
[,,--9770-,875]
[989,-]

在java中,您可以将此模式与
matches
方法结合使用:

[^\\[]*(?:\\[[0-9,-]*][^\\[]*)*+
它从字符串的开始到结束检查方括号中的所有部分是否只包含数字、逗号和加号

注意:根据您的要求,字符串和方括号内的内容可以为空。但是,我假设所有打开的方括号都是闭合的,并且方括号没有嵌套


您可以尝试以下方法:

^(?!.*\[[^\]]*[^0-9\],-][^\]]*\])


在这里,我断言在字符串中找不到上述模式。上面的模式是一个开始的方括号
[
后跟任意数量的非结束方括号的字符
]
,后跟一个非以下字符:数字
0-9
、结束方括号、逗号或破折号,后跟(再次)任何数量的非结束方括号的字符,最后是一个方括号。

我还想提出一些与希梅尔的答案非常接近的建议。在JavaScript中:

var pattern = /\[[0-9,-]+\]/g;
你可以在这里玩:

现在,这里唯一的问题是,在您的示例中,第一行应该被检测为“notok”,因为它包含一个包含无效数据的方括号块。正如您在上面的regexr.com示例中看到的,它将不匹配。但该行上的另一块括号将匹配。因此,如果要验证所有行,必须在每个括号块匹配上循环,然后检查它是否包含有效数据。如果其中一个括号块不包含有效数据,则所有行都无效


我不太确定您要验证什么,因为我们没有您代码的完整上下文。

您正在运行哪种语言?您自己尝试过什么吗?java,我尝试过这样的方法:.[[0-9[^0-9]]].*我对这方面很陌生,所以我没有什么好的经验ideas@roma,包含原始代码始终是一个好主意,即使它不起作用,即使你不太确定你在做什么。否则,看起来您没有尝试过任何东西,只是将StackOverflow用作问题解决/代码编写服务。它们都是封闭的,没有嵌套的