
08.10.2012, 19:12
|
|
Интересующийся
|
|
Регистрация: 08.10.2012
Сообщений: 18
|
|
|
Найти в строке строгое соответствие шаблону
Здравствуйте! Ситуация:
Есть строковоя переменная:
var a = '10,1,4,14,15,100,400,150';
Есть, другая, переменная со значением, которое нужно найти, регуляркой, в строке первой переменной. Например, 1
var b = 1;
---
Требуется регулярка... для поиска значения в строгом соответствии со значением переменной b. Т.е. чтобы при поиске 1, находилась именно 1, а не 10 или 14, 15 и т.д. где есть цифра 1.
Спасибо!
|
|

08.10.2012, 19:19
|
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
|
Сообщение от Delovar
|
|
Требуется регулярка...
|
кому требуется, тот пусть и пишет регулярку 
да и не регуляркой это делается. есть варианты проще и быстрее
|
|

08.10.2012, 19:45
|
|
Интересующийся
|
|
Регистрация: 08.10.2012
Сообщений: 18
|
|
|
какой вариант по вашему будет проще и быстрее? Хотелось бы услышать более конструктивную мысль; я ведь сюда за помощью обратился..
|
|

08.10.2012, 19:52
|
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
|
разбить строку в массив с помощью split
и найти в массиве
indexof для новых браузеров
или перебором массива и сравнением
в любом развале быстрее отработает чем регулярка
|
|

08.10.2012, 19:55
|
|
Интересующийся
|
|
Регистрация: 08.10.2012
Сообщений: 18
|
|
|
Спасибо! Так и решу!
|
|

08.10.2012, 19:55
|
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
по-моему, она будет такой:
new RegExp("(?:^|,)" + b + "(?:,|$)");
|
|

08.10.2012, 20:06
|
|
Интересующийся
|
|
Регистрация: 08.10.2012
Сообщений: 18
|
|
|
Сообщение от melky
|
по-моему, она будет такой:
new RegExp("(?:^|,)" + b + "(?:,|$)");
|
Спасибо, melky! как раз такой!)) Работает!
---
Но вот тут предложили вариант с предварительным разбитием строки в массив. Как считаете: какой вариант предпочтительнее?
|
|

08.10.2012, 20:12
|
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
|
сплит быстрее отработает изза того что механизм поиска регулярок основан на возвратах и перемещениях по строке.
т.е сравнило с 1м символом в строке,-сравнило первый символ регулярки, сравнило второй символ регулярки....
потом со вторым и т.д
разница будет зависеть от длинны строки
Последний раз редактировалось dmitriymar, 08.10.2012 в 20:15.
|
|

08.10.2012, 20:54
|
|
Интересующийся
|
|
Регистрация: 08.10.2012
Сообщений: 18
|
|
|
Сообщение от dmitriymar
|
разбить строку в массив с помощью split
и найти в массиве
indexof для новых браузеров
или перебором массива и сравнением
в любом развале быстрее отработает чем регулярка
|
так... да, с помощью indexOf() то же находит. А что значит для новых браузеров? Какие его не поддерживают? А если перебирать массив через for(), и сравнивать, то как это записать правильно?!
|
|

08.10.2012, 21:03
|
|
Любитель
|
|
Регистрация: 16.12.2009
Сообщений: 422
|
|
var a = '10,1,4,14,15,100,400,150';
var b = 1;
var mas=a.split(",")
for(var i=0;i<mas.length;i++) if(b==mas[i]) alert(mas[i]);
Последний раз редактировалось JsLoveR, 08.10.2012 в 21:11.
|
|
|
|