2015-06-26 4 views
1

Я хотел бы сохранить регулярное выражение в переменной, которая будет использоваться несколько раз. Например, у меня есть регулярное выражение для разграничения номера с помощью запятых https://jsfiddle.net/Le7wayee/:Использовать переменную, которая содержит Regex

var numAcquired = 1400000  
numAcquired = numAcquired.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 

Выход это, конечно, строка 1,400,000, но я использую это много раз по ряду переменных, содержащих различные номера/длины, и я предпочел бы, для простоты, сохранить его в переменной, а не в явной записи его каждый раз. Это что-то возможно?

+0

'var re = new RegExp ('\ B (? = (\ D {3}) + (?! \ D))', 'g');'? – putvande

+0

Вы уже знаете, как объявлять переменные и как создавать объекты регулярных выражений. Тогда это не должно быть сложно. – Oriol

+0

Действительный вопрос. Спасибо за вопрос. Не забудьте принять лучший ответ! @Oriol, не все очевидное для вас очевидно для всех остальных. – kdbanman

ответ

3

Просто присвоить регулярное выражение переменной:

var numberCommasRegexp = /\B(?=(\d{3})+(?!\d))/g; 
 

 
var numAcquired = 1400000; 
 
numAcquired = numAcquired.toString().replace(numberCommasRegexp, ','); 
 

 
alert(numAcquired);

Но вместо того, чтобы писать Выражение replace() все время, вы могли бы просто определить функцию, чтобы сделать это.

function addCommas(number) { 
 
    return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
 
} 
 
var numAcquired = 14000000; 
 
numAcquired = addCommas(numAcquired); 
 
alert(numAcquired);

+0

ха, глупый, я предположил, что это нечто большее; когда я попробовал это, прежде чем он не сработает. Должно быть, что-то случилось в первый раз – thekeegs

0

RegExp is a native type in JavaScript, и форма, которую вы уже используете - /\B(?=(\d{3})+(?!\d))/g - это его буквальным форма. Таким образом, вы можете присвоить это значение переменной, как вы бы любой буквальный вид:

var pattern = /\B(?=(\d{3})+(?!\d))/g 

И затем использовать это значение в любом методе String, который принимает образец:

numAcquired.toString().replace(pattern, ','); 

Если вы «Мне нравится примерный пример, см. ответ моего коллеги, который делает то же самое.

+0

RegExp - это не тип. – Oriol

Смежные вопросы