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',index: 3,
'a\nb',
'talerance',
input: 'fa\nulta\nbtalerance' ]
nb:[~]$ cat 1.js
var s = "fa\nulta\nbtalerance";и без /m:
var re = /(.*?)(a\nb)(.*)/m;
var m = re.exec(s);
console.log(m);
nb:[~]$ cat 1.js
var s = "fa\nulta\nbtalerance";nb:[~]$ vim 1.js
var re = /(.*?)(a\nb)(.*)/m;
var m = re.exec(s);
console.log(m);
nb:[~]$ nodejs 1.js
[ 'ulta\nbtalerance','ult',index: 3,
'a\nb',
'talerance',
input: 'fa\nulta\nbtalerance' ]--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
