2

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 からその文字列を引き出す最良の方法は何ですか?

4

6 に答える 6

2

文字列をトークンに分割し、 が 4 回出現する文字列を探すことができます-

または、ベースが常に同じである場合は、次のコードを使用できます。

String myString = window.location.href;
myString = myString.substring("http://localhost:8080/bladdey/shop/".Length());
myString = myString.subString(0, myString.indexOf('/'));
于 2013-07-29T14:57:57.973 に答える
1

先読みと後読みを使用し、

(?<=http://localhost:8080/bladdey/shop/).+?(?=/hired3)

詳しくはこちらをご覧ください。

:また、または/文字をエスケープする必要はありません。

于 2013-07-29T14:56:25.047 に答える
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 ワイルドカードが改行文字にも一致するようにします。
  • ^テキストの始まり
  • $テキストの終わり
  • .*0 個以上の (*) 任意の (.) 文字
  • [^...]+(^) でない 1 つ以上の (+) 文字が ...

最初の括弧の間は$1.

于 2013-07-29T15:05:32.427 に答える
1

キャプチャ グループを使用して、文字列の一部のコンテンツを引き出すことができます。あなたの場合:

   Pattern pattern = Pattern.compile("(http://localhost:8080/bladdey/shop/)(.+)(/hired-3)");
    Matcher matcher = pattern.matcher(string);
    if(matcher.matches()){
       String value = matcher.group(2);
    }
于 2013-07-29T15:00:13.563 に答える
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/) 。

于 2013-07-29T15:01:44.530 に答える
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}が、あなたの URL では形式が正しくなく、15.5 バイトの情報しかありません。

于 2013-07-29T15:53:27.237 に答える