Убедитесь, что строка содержит только цифры, точки и, возможно, начальный тире - PullRequest
0 голосов
/ 12 декабря 2018

Я все еще изучаю регулярное выражение, мне нужно удалить все символы в строке, кроме чисел (0-9), только точки (.) При первом обращении и отрицательного (-), если встречается в первом индексе строки.

так что в основном, если бы у меня была строка "-12,3asd45, мы-678.90.45", это должно дать мне "-12345678.9045"

Это мой текущий код, но проблема в том,Я просто хочу исключить (-), если это происходит по первому индексу строки, в настоящее время это исключает во всех случаях (-):

value = val.replace(/[^-0-9.]/g , '');

1 Ответ

0 голосов
/ 12 декабря 2018

Чередуйте набор символов с (?!^)- (отрицательный взгляд на начало строки, за которым следует -):

const val = "-12,3asd45,we-678.90"
console.log(val.replace(/[^0-9.-]|(?!^)-/g, ''));

Чтобы дополнительно удалить все десятичные дроби, кроме первого, сопоставьте все после первого . в группе и используйте функцию обратного вызова для замены всех периодов в этой группе пустымистрока:

const val = "-12,3asd45,we-678.90.0.0.0"
const value = val
  .replace(/[^0-9.-]|(?!^)-/g, '')
  .replace(/^([^.]*\.)(.*)/, (_, g1, g2) => g1 + g2.replace(/\./g, ''));
console.log(value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...