Подтвердить что ты не робот

Соответствие регулярного выражения Javascript для строки, за которой следует номер?

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

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

Ответ 1

Вы хотите...

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

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

  • ^ начало строки
  • string: буквальная строка: вы упомянули
  • (.....) Это подвыражение, о котором вы можете обратиться позже, если вам нужно знать, какой номер находится в строке (хотя в этом конкретном случае вы также можете просто заменить 'string:' на '')
  • [0-9] символ между 0 и 9 (т.е. цифрой)
  • + Должен иметь хотя бы один "из них" (т.е. цифры, упомянутые выше), но может иметь любое число
  • $ конец строки

Ответ 2

if( it.match(/^string:\d+$/) ( {
   ...
}

Ответ 3

Если вы хотите только проверить, соответствует ли входная строка шаблону, вы можете использовать функцию 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
}

Ответ 4

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

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

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

Ответ 5

if(teststring.match(new RegExp("^" + knownstring + ":\d+$"))) {
  // some code
}

Ответ 6

if(!!"string:5456".match(/^string:\d+$/)) { ... }

Число является целым числом в приведенном выше примере.