Rozumiem, jak używać PHP'S preg_match(), aby wyodrębnić sekwencję zmiennej ze sznurka. Nie jestem jednak pewien, co robić, jeśli są zmienne 2 , które muszę pasować.

Oto kod Jestem zainteresowany:

$string1 = "help-xyz123@mysite.com";
$pattern1 = '/help-(.*)@mysite.com/'; 
preg_match($pattern1, $string1, $matches);
print_r($matches[1]); // prints "xyz123"

$string2 = "business-321zyx@mysite.com";

Więc zasadniczo zastanawiam się, jak wyodrębnić dwa wzory: 1), czy pierwsza część łańcucha jest "pomocą" lub "biznes" i 2), czy druga część jest "XYZ123" vs. "ZYX321".

Opcjonalne pytanie bonusowe brzmi, jaka byłaby odpowiedź napisana w JS? Nigdy tak naprawdę nie widziałem, jeśli REGEX (tj. Kod, w tym ukośnik, /..../) są zawsze takie same lub nie w PHP vs. JS (lub jakimkolwiek języku w tej sprawie).

0
tim peterson 30 wrzesień 2012, 17:53

2 odpowiedzi

Najlepsza odpowiedź

Rozwiązanie jest całkiem proste. Dla każdego wzoru, który chcesz dopasować, umieść ten wzór między nawiasami (...). Aby wyodrębnić każdy wzór, użyj tego, co już użyłeś (.*). Aby po prostu odróżnić "Pomoc" vs. "Biznes", możesz użyć | w wzorze regexa:

/(help|business)-(.*)@mysite.com/

Powyższy regex powinien pasować do obu formatów. (help|business) w zasadzie mówi, że jest mecz help lub business.

Więc ostatnia odpowiedź to:

$string1 = "help-xyz123@mysite.com";
$pattern1 = '/(help|business)-(.*)@mysite.com/'; 
preg_match($pattern1, $string1, $matches);
print_r($matches[1]); // prints "help"
echo '<br>';
print_r($matches[2]);  // prints "xyz123"

Ten sam wzór regex powinien być użyteczny w JavaScript. Nie musisz go poprawić.

1
tim peterson 30 wrzesień 2012, 15:00

Tak, Kemal ma rację. Możesz użyć tego samego wzoru w JavaScript.

var str="business-321zyx@mysite.com";
var patt1=/(help|business)-(.*)@mysite.com/;
document.write(str.match(patt1));

Po prostu zwracaj uwagę na wartość powrotną z funkcji, które są różne. PHP zwraca tablicę więcej informacji niż ten kod w JavaScript.

1
Simone-Cu 30 wrzesień 2012, 14:14