У меня есть строка формата: string:num
, где num - любое число, но строка - это известная строка, которую мне нужно сопоставить. Я хотел бы иметь это в выражении if как:
if( it matches 'string:' followed by a number) {
//do something
}
У меня есть строка формата: string:num
, где num - любое число, но строка - это известная строка, которую мне нужно сопоставить. Я хотел бы иметь это в выражении if как:
if( it matches 'string:' followed by a number) {
//do something
}
Вы хотите...
if (stringYouHave.match(/^string:([0-9]+)$/)) {
// do something
}
Это включает в себя:
^
начало строкиstring:
буквальная строка: вы упомянули(.....)
Это подвыражение, о котором вы можете обратиться позже, если вам нужно знать, какой номер находится в строке (хотя в этом конкретном случае вы также можете просто заменить 'string:'
на ''
)[0-9]
символ между 0
и 9
(т.е. цифрой)+
Должен иметь хотя бы один "из них" (т.е. цифры, упомянутые выше), но может иметь любое число$
конец строкиif( it.match(/^string:\d+$/) ( {
...
}
Если вы хотите только проверить, соответствует ли входная строка шаблону, вы можете использовать функцию 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
}
Вышеприведенное полезно для целых чисел; если вы хотите числа с плавающей запятой или даже научную нотацию (как понимается в языках типа C), вам нужно что-то вроде этого:
if (stringYouHave.match(/^string:[+-]?[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?$/))
{
// do something
}
Вы можете удалить первый [+ -]? если вам не нужен знак, (. [0-9] +)? если вам не нужны плавающие точки, и ([eE] [+ -]? [0-9] +)? если вам не нравятся показатели научной нотации. Но если есть шанс, что вы хотите их сопоставить, вы хотите включить их в качестве необязательного в регулярное выражение.
if(teststring.match(new RegExp("^" + knownstring + ":\d+$"))) {
// some code
}
if(!!"string:5456".match(/^string:\d+$/)) { ... }
Число является целым числом в приведенном выше примере.