Java-正则表达式,用于检查字符串是否包含连续数字和其他字符
我希望编写正则表达式来检查字符串是否包含以下内容:Java-正则表达式,用于检查字符串是否包含连续数字和其他字符,java,Java,我希望编写正则表达式来检查字符串是否包含以下内容: 它包含2到5位的连续数字 它包含超过9位的连续数字 例如: 你好,我的地址是1 MG路-返回错误 你好,我住在100英尺路-返回真实 你能叫我9999273732吗。这是我的号码——是真的 我的pin码是313002-retuns false 您可以使用此正则表达式: ^\D*(?:\d{2,5}|\d{9,})\D*$ 简短说明(您也可以访问演示以查看说明): ^:开始锚定 \D*:任意数量的非数字 (?::启动非捕获组 \d{2,5}:
您可以使用此正则表达式:
^\D*(?:\d{2,5}|\d{9,})\D*$
简短说明(您也可以访问演示以查看说明):
:开始锚定^
:任意数量的非数字\D*
:启动非捕获组(?:
:2-5位s\d{2,5}
:交流发电机|
:9位或更多位\d{9,}
:非捕获组结束)
:任意数量的非数字\D*
:端锚$
String.matches()
Pattern.matches()
Matcher.matches()
^
和$
模式=
Pattern pattern =
Pattern.compile("(?<!\\d)(\\d{2,5})(?!\\d)|\\d{9,}");
Matcher matcher =
pattern.matcher("111lo, I stay at 100 Feet R10034"); // your input here
while (matcher.find()) {
System.out.format("I found the text" +
" \"%s\" starting at " +
"index %d and ending at index %d.%n",
matcher.group(),
matcher.start(),
matcher.end());
}
compile((?您可以这样做
fun checkDigit(inputValue: String): Boolean {
var isContinueDigit = false
var digitSize = 0
inputValue.forEach {
if (it.isDigit()) {
if (isContinueDigit) {
digitSize++
} else {
isContinueDigit = true
digitSize = 0
digitSize++
}
} else {
isContinueDigit = false
}
}
val isDigit: ArrayList<Int> = arrayListOf(2, 3, 4, 5, 9)
return isDigit.contains(digitSize) || isDigit.last() < digitSize
}
fun校验位(inputValue:String):布尔值{
var isContinueDigit=false
var digitSize=0
inputValue.forEach{
if(it.isDigit()){
if(isContinueDigit){
数字化++
}否则{
isContinueDigit=true
数字大小=0
数字化++
}
}否则{
isContinueDigit=false
}
}
valisdigit:ArrayList=arrayListOf(2,3,4,5,9)
返回isDigit.contains(digitSize)| isDigit.last()
这里是(\\d{2,5}|\\d{9,})
。投票被否决,因为没有任何尝试。只是想知道:为什么我们需要一个非捕获组?@Amim OP不想捕获任何东西,他们只想检查字符串是否与正则表达式匹配,所以我们不需要捕获组,但如果我们使用一个,它也会起作用。OP没有提到他们使用kotlinYea。我忘了谢谢下次我会小心这不是我的问题,像2,5这样的数字意味着(例如4456,2545625254),而高于9意味着(例如985674236)无论你分享什么,谢谢你,但是请帮帮忙。2,5表示元素的大小。9以上也表示大小。所以它并不意味着只有从2到9的数字。它只是表示数组的大小