Вы не указали, что такое «число», поэтому я разработал решение, которое работает не только для целых положительных чисел, но также для целых и целых чисел со знаком и заботится о вложенных круглых скобках.
/{\d+}/g
соответствует одному или более цифр в фигурные скобки
var str = 'some text {Foo} some more text {9}';
var m = str.match(/{\d+}/g);
console.log(m); // m = [ "{9}" ]
Но выше шаблон не соответствует поплавки, например, {3.14}
str = 'some text {Foo} some more text {9} and {3.14}';
m = str.match(/{\d+}/g);
console.log(m); // m = [ "{9}" ]
А насчет двойных круглых скобок они в порядке?
str = 'some text {Foo} some more text {9} and {3.14} and {{8}}';
m = str.match(/{\d+}/g);
console.log(m); // m = [ "{9}", "{8}" ]
Вы можете использовать это, чтобы соответствовать поплавки
str = 'some text {Foo} some more text {9} and {3.14} and {{8}}';
m = str.match(/{(\-|\+)?(\d+(\.\d+)?)}/g);
console.log(m); // m = [ "{9}", "{3.14}", "{8}" ]
Так вот решение, позволяющее вложенные фигурные скобки
str = 'some text {Foo} some more text {9} and {3.14} and {{8}}';
var newStr = str.replace(/{(\-|\+)?(\d+(\.\d+)?)}/g, '{NUMBER}');
console.log(newStr);
Заботясь вложенных скобок
матча все между фигурными скобками и проверить для числовых значений (регулярное выражение из https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)
str = 'some text {Foo} some more text {9} and {3.14} and {{8}}';
m = str.match(/{.+?}/g);
console.log(m); // m = [ "{Foo}", "{9}", "{3.14}", "{{8}" ]
for (var i = 0; i < m.length; i++) {
mi = m[i];
value = mi.slice(1, mi.length - 1);
// regular expression for parsing floats from:
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat
if (/^(\-|\+)?([0-9]+(\.[0-9]+)?)$/
.test(value)) {
console.log("matches a number: ", value);
}
};
Напишите функция для замены числовых значений только
function replaceNumber(string, repl) {
return string.replace(/{.+?}/g, function(match) {
value = match.slice(1, match.length - 1);
if (/^(\-|\+)?([0-9]+(\.[0-9]+)?)$/
.test(value)) {
return '{' + repl + '}';
} else {
return match;
}
});
}
str = 'some text {Foo} some more text {9} and {3.14} and {{8}} and {-2}';
newStr = replaceNumber(str, 'NUMBER');
console.log(newStr);
// newStr = some text {Foo} some more text {NUMBER} and {NUMBER} and {{8}} and {NUMBER}
'NewStr = str.replace (/ {\ d +}/г, 'что-то');' – anubhava
[Специальные символы значение в регулярных выражениях] (https: //developer.mozilla .org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp # Special_characters_meaning_in_regular_expressions) – Andreas
@anubhava спасибо :) – VilleKoo