Соответствие регулярного выражения Javascript для строки с последующим номером? - PullRequest
19 голосов
/ 12 августа 2009

У меня есть строка в формате: string:num, где num - любое число, но string - известная строка, с которой мне нужно соответствовать. Я хотел бы иметь это в выражении if как:

if( it matches 'string:' followed by a number) {
   //do something
}

Ответы [ 6 ]

43 голосов
/ 12 августа 2009

Хочешь ...

if (stringYouHave.match(/^string:([0-9]+)$/)) {
    // do something
}

Это включает в себя:

  1. ^ начало строки
  2. string: буквальная "строка:", которую вы упомянули
  3. (.....) Это подвыражение, к которому вы можете обратиться позже, если вам нужно знать , какое число содержится в строке (хотя в данном конкретном случае вы также можете просто заменить 'string:' на '')
  4. [0-9] a символ между 0 и 9 (то есть цифра)
  5. + Должен иметь хотя бы одну "из них" (то есть цифры, упомянутые выше), но может иметь любое число
  6. $ конец строки
5 голосов
/ 12 августа 2009
if( it.match(/^string:\d+$/) ( {
   ...
}
3 голосов
/ 12 августа 2009

Если вы хотите только проверить, соответствует ли входная строка шаблону, вы можете использовать функцию RegExp.test :

if (/^string:[0-9]+$/.test(input)){
  //..
}

или с функцией String.search :

if (input.search(/^string:[0-9]+$/) != -1){
  //..
}

Если вы хотите подтвердить и получить номер:

var match = input.match(/^string:([0-9]+)$/),
    number;

if (match){
  number = +match[1]; // unary plus to convert to number
  // work with it
}
1 голос
/ 12 августа 2009
if(teststring.match(new RegExp("^" + knownstring + ":\d+$"))) {
  // some code
}
1 голос
/ 12 августа 2009

Вышесказанное подходит для целых чисел; если вам нужны числа с плавающей запятой или даже научная нотация (как это понимается в C-подобных языках), вам понадобится что-то вроде этого:

if (stringYouHave.match(/^string:[+-]?[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?$/))
{
    // do something
}

Вы можете удалить первый [+ -]? если вас не волнует знак, то (. [0-9] +)? если вас не волнуют плавающие точки и ([eE] [+ -]? [0-9] +)? если вы не заботитесь о научных показателях записи. Но если есть шанс, что вы ДЕЙСТВИТЕЛЬНО хотите сопоставить их, вы хотите включить их в качестве необязательных в регулярное выражение.

0 голосов
/ 12 августа 2009
if(!!"string:5456".match(/^string:\d+$/)) { ... }

Число - это целое число в примере выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...