Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> RegExp /g
flashdev
post
Post #1





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
flashdev
post
Post #2





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


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

Cytat(Crozin @ 7.01.2011, 23:28:08 ) *
Takie wyrażenie powinno zadziałać:
[JAVASCRIPT] pobierz, plaintext
  1. /(?=a)\d+(?=a)/g
[JAVASCRIPT] pobierz, plaintext


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)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 11:54