PDA

Просмотр полной версии : Регулярное выражение вида /a?.*/


miramax
27.12.2006, 20:04
Хочу найти в строке все числа, положительные и отрицательные. Например:
-100 250 тра-ла-ла 25-64 .
Надо найти массив -100, 250, 25, -64
Т.е число - это последовательность цифр, перед которой может стоят знак "-"

var pat:RegExp = /-?\d*/g
trace(String(' 22as. -5 ').match(pat)) //скрипт виснет


var pat:RegExp = /(\-)?\d*/g
trace(String(' 22as. -5 ').match(pat)) //скрипт виснет

Такая же картина при поиске юникодного и ANSI кода символа "-".
Да и вообще, любого знака.
Т.е. конструкция
/a?/g
, где а - любой символ, "вешает" плеер.

MerlinTwi
27.12.2006, 22:29
var pat:RegExp = /\-?\d+/g;
trace(String(' 22as. -5 ').match(pat)) //скрипт работает

miramax
27.12.2006, 23:11
var pat:RegExp = /\-?\d+/g;
trace(String(' 22as. -5 ').match(pat)) //скрипт работает
Спасибо, понял свою ошибку. Мой скрипт искал бы и отдельные символы "-" в строке. В моих данных только только числа и пробелы между ними, упустил это момент.

Конечно в выражении /-?\d*/ - возможен случай пустой строки, наверное поэтому плеер виснет в бесконечном цикле, хотя мне кажется это неправильным. Для такого случая придётся писать более сложные условия со скобками, что бы исключит случаи пустой строки.