Regex: Не начало строки? - PullRequest
       4

Regex: Не начало строки?

1 голос
/ 23 ноября 2011

У меня есть такая строка: ----------- 243f,33f----

Теперь я хочу удалить все символы -, кроме первого -, , и чисел. Результат должен быть -243,33. Как бы я это сделал?

Ответы [ 4 ]

7 голосов
/ 23 ноября 2011

Ваш вопрос все еще не очень понятен, но при этом вы получите желаемый результат:

'----------- 243f,33f----'.replace(/(?!^-)[^\d,]+/g, '')

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

РЕДАКТИРОВАТЬ: Для тех, кто придумал регулярные выражения, используя (?<!^), а затем отозвал их, потому что JavaScript не поддерживает вид сзади, что не было необходимости.Я знаю, что были другие проблемы с этими ответами, но с целью сопоставления «не начало строки», (?!^) работает просто отлично.

1 голос
/ 23 ноября 2011

'----------- 243f,33f----'.replace(/[^-0123456789,]/g, '').replace(/^-/, 'x').replace(/-/g, '').replace(/x/, '-')

вывод: '-243,33'

0 голосов
/ 23 ноября 2011

заменить подстроку из второго символа ala

string.charAt(0) + string.substring(1).replace("-","");

но я не знаю, правильный ли синтаксис

EDIT:

о, если вы тоже хотите удалить букву f, вы можете удалить любые нецифровые и не запятые:

string.charAt(0) + string.substring(1).replace("[^0-9,]","");
0 голосов
/ 23 ноября 2011

Попробуйте это:

(?:(^-)|[^\d,\r\n])

и замените на

$1

Посмотрите это здесь на Regexr

Это немного сложнееТак как Javascript не поддерживает взгляды за спиной.Поэтому, если в начале строки есть -, она будет заменена самой собой, для других совпадений $1 пусто, поэтому заменено ничем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...