2013-10-05 4 views
-2

У меня есть один RegExp, может кто-нибудь объяснить, что он делает?регулярное выражение для замены на ','

Regexp

b=b.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1 ") 

Я думаю, что это меняет с пространством (» ')

, если я прав, я хочу, чтобы заменить его запятой (,) вместо пробела (' «).

+0

Почему этот помеченный jQuery? –

+0

что заменить? : D – Darka

+2

Попробуйте 'b = b.replace (/ (\ d {1,3} (? = (?: \ D \ d \ d) + (?! \ D)))/g," $ 1, ") ' –

ответ

0

Регулярное выражение соответствует любым (\d{1,3}(?=(?:\d\d\d)+(?!\d))) 1-3 цифр ((\d{1,3}), что сопровождается кратным 3 цифр ((?:\d\d\d)+), который не следует другой цифрой ((?!\d)). Он заменяет его "$1 ". $1 заменяется первой группой захвата. Пространство за ним - это пространство.

См. regexpressions on mdn для получения дополнительной информации о различных синтаксисах.

Если вы хотите разделить цифры запятой, вместо пробела вместо этого вам нужно заменить ее на "$1,".

1

Чтобы объяснить регулярное выражение, давайте разбить его:

(   # Match and capture in group number 1: 
\d{1,3} # one to three digits (as many as possible), 
(?=  # but only if it's possible to match the following afterwards: 
    (?:  # A (non-capturing) group containing 
    \d\d\d # exactly three digits 
)+  # once or more (so, three/six/nine/twelve/... digits) 
    (?!\d) # but only if there are no further digits ahead. 
)   # End of (?=...) lookahead assertion 
)   # End of capturing group 

На самом деле, внешние скобки не нужны, если вы используете $& вместо $1 для замены строки ($& содержит весь матч).

+0

Умное объяснение – dynamic

0

Не пытайтесь решить все, используя регулярные выражения.

Регулярные выражения предназначены для , соответствующих, а не для исправления форматирования нетекстового кодированного текста.

Если вы хотите форматировать номера по-разному, извлеките их и используйте форматированные строки, чтобы переформатировать их на уровне обработки символов. Это всего лишь уродливый хак.

Можно использовать регулярные выражения для поиска чисел в тексте, например. \d{4,}, но попытка сделать фактическое форматирование с помощью регулярного выражения является сумасшедшим злоупотреблением.

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