Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти в строке строгое соответствие шаблону (https://javascript.ru/forum/misc/32235-najjti-v-stroke-strogoe-sootvetstvie-shablonu.html)

Delovar 08.10.2012 19:12

Найти в строке строгое соответствие шаблону
 
Здравствуйте! Ситуация:

Есть строковоя переменная:

var a = '10,1,4,14,15,100,400,150';

Есть, другая, переменная со значением, которое нужно найти, регуляркой, в строке первой переменной. Например, 1

var b = 1;

---

Требуется регулярка... для поиска значения в строгом соответствии со значением переменной b. Т.е. чтобы при поиске 1, находилась именно 1, а не 10 или 14, 15 и т.д. где есть цифра 1.

Спасибо!

dmitriymar 08.10.2012 19:19

Цитата:

Сообщение от Delovar
Требуется регулярка...

кому требуется, тот пусть и пишет регулярку:)
да и не регуляркой это делается. есть варианты проще и быстрее

Delovar 08.10.2012 19:45

какой вариант по вашему будет проще и быстрее? Хотелось бы услышать более конструктивную мысль; я ведь сюда за помощью обратился..

dmitriymar 08.10.2012 19:52

разбить строку в массив с помощью split
и найти в массиве
indexof для новых браузеров
или перебором массива и сравнением
в любом развале быстрее отработает чем регулярка

Delovar 08.10.2012 19:55

Спасибо! Так и решу!

melky 08.10.2012 19:55

по-моему, она будет такой:
new RegExp("(?:^|,)" + b + "(?:,|$)");

Delovar 08.10.2012 20:06

Цитата:

Сообщение от melky
по-моему, она будет такой:
new RegExp("(?:^|,)" + b + "(?:,|$)");

Спасибо, melky! как раз такой!)) Работает!
---
Но вот тут предложили вариант с предварительным разбитием строки в массив. Как считаете: какой вариант предпочтительнее?

dmitriymar 08.10.2012 20:12

сплит быстрее отработает изза того что механизм поиска регулярок основан на возвратах и перемещениях по строке.
т.е сравнило с 1м символом в строке,-сравнило первый символ регулярки, сравнило второй символ регулярки....
потом со вторым и т.д
разница будет зависеть от длинны строки

Delovar 08.10.2012 20:54

Цитата:

Сообщение от dmitriymar
разбить строку в массив с помощью split
и найти в массиве
indexof для новых браузеров
или перебором массива и сравнением
в любом развале быстрее отработает чем регулярка

так... да, с помощью indexOf() то же находит. А что значит для новых браузеров? Какие его не поддерживают? А если перебирать массив через for(), и сравнивать, то как это записать правильно?!

JsLoveR 08.10.2012 21:03

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]);


Часовой пояс GMT +3, время: 23:04.