Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.10.2012, 19:12
Интересующийся
Отправить личное сообщение для Delovar Посмотреть профиль Найти все сообщения от Delovar
 
Регистрация: 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.

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 08.10.2012, 19:19
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Delovar
Требуется регулярка...
кому требуется, тот пусть и пишет регулярку
да и не регуляркой это делается. есть варианты проще и быстрее
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2012, 19:45
Интересующийся
Отправить личное сообщение для Delovar Посмотреть профиль Найти все сообщения от Delovar
 
Регистрация: 08.10.2012
Сообщений: 18

какой вариант по вашему будет проще и быстрее? Хотелось бы услышать более конструктивную мысль; я ведь сюда за помощью обратился..
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2012, 19:52
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

разбить строку в массив с помощью split
и найти в массиве
indexof для новых браузеров
или перебором массива и сравнением
в любом развале быстрее отработает чем регулярка
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2012, 19:55
Интересующийся
Отправить личное сообщение для Delovar Посмотреть профиль Найти все сообщения от Delovar
 
Регистрация: 08.10.2012
Сообщений: 18

Спасибо! Так и решу!
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2012, 19:55
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

по-моему, она будет такой:
new RegExp("(?:^|,)" + b + "(?:,|$)");
Ответить с цитированием
  #7 (permalink)  
Старый 08.10.2012, 20:06
Интересующийся
Отправить личное сообщение для Delovar Посмотреть профиль Найти все сообщения от Delovar
 
Регистрация: 08.10.2012
Сообщений: 18

Сообщение от melky
по-моему, она будет такой:
new RegExp("(?:^|,)" + b + "(?:,|$)");
Спасибо, melky! как раз такой!)) Работает!
---
Но вот тут предложили вариант с предварительным разбитием строки в массив. Как считаете: какой вариант предпочтительнее?
Ответить с цитированием
  #8 (permalink)  
Старый 08.10.2012, 20:12
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 08.10.2012 в 20:15.
Ответить с цитированием
  #9 (permalink)  
Старый 08.10.2012, 20:54
Интересующийся
Отправить личное сообщение для Delovar Посмотреть профиль Найти все сообщения от Delovar
 
Регистрация: 08.10.2012
Сообщений: 18

Сообщение от dmitriymar
разбить строку в массив с помощью split
и найти в массиве
indexof для новых браузеров
или перебором массива и сравнением
в любом развале быстрее отработает чем регулярка
так... да, с помощью indexOf() то же находит. А что значит для новых браузеров? Какие его не поддерживают? А если перебирать массив через for(), и сравнивать, то как это записать правильно?!
Ответить с цитированием
  #10 (permalink)  
Старый 08.10.2012, 21:03
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ie6-7 В какой строке ошибка, как найти эту строку? aRpi Internet Explorer 1 04.04.2012 19:06
Как найти и преобразовать дату в строке? Sergey_New Общие вопросы Javascript 8 10.06.2011 09:31
Помогите найти звездочку (*) в строке Samaretz Общие вопросы Javascript 2 14.09.2010 15:44