在java中,我将此URL作为字符串:
window.location.href =
"http://localhost:8080/bladdey/shop/c6c8262a-bfd0-4ea3-aa6e-d466a28f875/hired-3";
我想创建一个javascript正则表达式来提取以下字符串:
c6c8262a-bfd0-4ea3-aa6e-d466a28f875
要查找文本的左手标记,我可以使用正则表达式:
window\.location\.href \= \"http\:\/\/localhost:8080\/bladdey\/shop\/
但是,我不知道如何找到它与/hired3"
使用javascript从URL中提取该字符串的最佳方法是什么?
答案 0 :(得分:2)
您可以将字符串拆分为标记,并查找包含4次-
的字符串。
或者,如果基数始终相同,则可以使用以下代码:
String myString = window.location.href;
myString = myString.substring("http://localhost:8080/bladdey/shop/".Length());
myString = myString.subString(0, myString.indexOf('/'));
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以使用capturing groups提取字符串的某些内容。 在你的情况下:
Pattern pattern = Pattern.compile("(http://localhost:8080/bladdey/shop/)(.+)(/hired-3)");
Matcher matcher = pattern.matcher(string);
if(matcher.matches()){
String value = matcher.group(2);
}
答案 3 :(得分:1)
你需要一个正则表达式,以及一些使用它的方法......
String theLocation = "http://localhost:8080/bladdey/shop/c6c8262a-bfd0-4ea3-aa6e-d466a28f8752/hired-3";
String pattern = "(?</bladdey/shop/).+?(?=/hired3)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
} else {
System.out.println("NO MATCH");
}
注意 - 当您更改主机(它只查找bladdey/shop/
)
答案 4 :(得分:1)
String param = html.replaceFist("(?s)^.*http://localhost:8080/bladdey/shop/([^/]+)/hired-3.*$", "$1");
if (param.equals(html)) {
throw new IllegalStateException("Not found");
}
UUID uuid = new UUID(param);
在正则表达式中:
(?s)
让.
char通配符也匹配换行符。^
文字开头$
文字结尾.*
零个或多个(*)任何(。)字符[^...]+
一个或多个(+)字符不是(^)是...... 在第一个括号之间替换$1
。
答案 5 :(得分:0)
好吧,如果你想从任何东西中取出GUID:
var regex = /[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{11,12}/i
它应该是{12}
但是在你的网址中它是格式错误的,只有15.5个字节的信息。