我需要一个正则表达式,用于下面的模式
/*
,至少1个数字和空格或数字以及/*
有效字符串:
3232////33 43/323//
3232////3343/323//
/3232////343/323//
无效字符串:
/sas/3232/////dsds/
/ /34343///// /////
///////////
我的问题是,它可以在/3232 323/
之类的数字之间留出空格,而不是/ /
如何验证?
到目前为止我已尝试过:
(\\d[\\d ]*/+) , (/*\\d[\\d ]*/+) , (/*)(\\d*)(/*)
答案 0 :(得分:1)
答案 1 :(得分:0)
试试这个java正则表达式
/*(\\d[\\d ]*(?<=\\d)/+)+
符合您的所有标准。
虽然您没有明确说明,但我假设某个空格可能不会显示为数字的第一个或最后一个字符(即空格必须在数字之间)
答案 2 :(得分:0)
只需使用lookarounds作为最后一个条件。
^(?=.*?\\d)([\\d/]*(?:/ ?(?!/)|\\d ?))+$
最好的方法是使用条件正则表达式,但我认为Java不支持它们。
<强>解释强>
基本上是数字或斜杠,后跟一个数字和一个空格,或一个斜杠和一个没有后跟另一个斜杠的空格。重复一遍。该空格是可选的,因为我假设你的字符串末尾没有空格。
答案 3 :(得分:0)
我的解决方案并非如此简单,但可行。
^(((\d[\d ]*\d)|\d)|/)*((\d[\d ]*\d)|\d)(((\d[\d ]*\d)|\d)|/)*$
答案 4 :(得分:0)
"(?![A-z])(?=.*[0-9].*)(?!.*/ /.*)[0-9/ ]{2,}(?![A-z])"
这将符合您的要求,但请记住它也会匹配此
/3232///// from /sas/3232/////dsds/
这是因为无效字符串的一部分是正确的
如果你逐行阅读然后匹配^ $,如果你正在阅读整个文本块,那么在上面的正则表达式周围搜索\ r \ n以匹配每个新行