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

Ответить