![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Do tej pory pisałem wyrażenia regularnie głównie w PHP i Ruby. W tej chwili zetknąłem się z problemem w js, ponieważ tutaj działa to troszkę inaczej.
Kod var txt = ' 123 a127a b23b a4a'; var res = txt.match(/a([0-9]+)a/g); for( var i in res ){ alert(i + ' = ' + res[i]); } http://js.blop.pl/index.php?dmFyIHR4dCA9IC...mVzW2ldKTsNCn0= Chciałbym uzyskać tablicę samych cyfr [127, 4] bez otaczających ich znakó, które z kolei są konieczne do dopasowania wyrażenia. Usunięcie modyfikatora 'g' zwraca odpowiednią tablicę, ale tylko dla pierwszego dopasowania zamiast wszystkich jak to się dzieje w PHP. Ten post edytował flashdev 7.01.2011, 13:19:45 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Kod function arrayMap(fun, arr){ for( var i in arr ) arr[i] = fun(arr[i]); return arr; } var tak = 'abcd a123z (nawias)'; var nie = '123abc'; var res = arrayMap(function(s){ return s.match(/[a-z][a-z0-9]*/i)[0]; }, (tak+' ' +nie).match(/([^a-z0-9]|^)([a-z][a-z0-9]*)([^a-z0-9]|$)/gim)); alert(res); http://js.blop.pl/index.php?ZnVuY3Rpb24gYX...mFsZXJ0KHJlcyk7 Takie wyrażenie powinno zadziałać:
Probuje przy użyciu ?= i ?! i rzeczywiście to w jakiś sposób powoduje, że w wyniku nie ma tych niechcianych ciągów, ale w tej chwili nie przechodzi prawidłowo mojego przypadku testowego. Kod .match(/((?![a-z0-9])|^)([a-z][a-z0-9]*)((?![a-z0-9])|$)/gim)
.match(/((?=[^a-z0-9])|^)([a-z][a-z0-9]*)((?=[^a-z0-9])|$)/gim) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 11:54 |