К счастью, пока не приходилось таким страдать. Но если вдруг придётся,
http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode и
http://inimino.org/~inimino/blog/javascript_cset


8 декабря 2012 г., 3:49 пользователь Orlovsky Alexander <
[email protected]> написал:

> JS регекспы – жуткий треш, когда текст не-ASCII (в переводе – ничего не
> работает)
>
> 08.12.2012, 02:31, "Akzhan Abdulin" <[email protected]>:
>
> А, вы об этом. Модификатора s нет. В таких случаях надо заменять . на
> [\s\S]
> var s = "fau\nlta\nbtalerance";
> var re = /([\s\S]*?)(a\nb)([\s\S]*)/m;
> var m = re.exec(s);
> console.log(m);
>
> 8 декабря 2012 г., 2:14 пользователь Ivan Petrov 
> <[email protected]>написал:
>
> > Опять не понял.
>
> > ➜  Projects  cat 1.js
> > var s = "faulta\nbtalerance";
>
> > var re = /(.*?)(a\nb)(.*)/m;
>
> > var m = re.exec(s);
>
> > console.log(m);
> как говорили у нас на родине "авоттех..." оно не работает.
>
> это же не Perl, регулярные выражения совершенно непредсказуемы!
>
> добавляем \n в слово fault и все магически перестает работать:
>
> nb:[~]$ nodejs 1.js
> [ 'ulta\nbtalerance',
>   'ult',
>   'a\nb',
>   'talerance',
>   index: 3,
>   input: 'fa\nulta\nbtalerance' ]
> nb:[~]$ cat 1.js
> var s = "fa\nulta\nbtalerance";
>
> var re = /(.*?)(a\nb)(.*)/m;
>
> var m = re.exec(s);
>
>
> console.log(m);
>
> и без /m:
>
> nb:[~]$ cat 1.js
> var s = "fa\nulta\nbtalerance";
>
> var re = /(.*?)(a\nb)(.*)/m;
>
> var m = re.exec(s);
>
>
> console.log(m);
> nb:[~]$ vim 1.js
> nb:[~]$ nodejs 1.js
> [ 'ulta\nbtalerance',
>   'ult',
>   'a\nb',
>   'talerance',
>   index: 3,
>   input: 'fa\nulta\nbtalerance' ]
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
> ,
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить