Regex не работает для некоторых пользователей - PullRequest
1 голос
/ 05 апреля 2019

Я хочу построить регулярное выражение для следующих случаев:

Разделить ввод на ',' исключая вход, имеющий номер до и после ',' или только перед ','

Например: Вход: тестовый вход, вход val, вход 1, вход 2, вход 3,4

Вывод: ['тестовый ввод', 'val input', 'input 1', 'input 2', 'input 3,4']

$input_values = "test input, val input, input 1, input 2, input 3,4";
$regex = '/(?<!\d)\,/m';
$subst = '~';
$initial_input = preg_replace($regex, $subst, $input_values);
var_dump($initial_input);

Код, упомянутый здесь, отображаетвыход:

['test input','val input', 'input 1, input 2', 'input 3,4']

Не разделяется Вход 1, Вход 2

1 Ответ

1 голос
/ 05 апреля 2019

Вы можете использовать

'/(?<!\d(?=,\d)),/'

См. Демоверсию regex

enter image description here

Соответствует ,, которому не предшествует цифра, за которой следуют , и цифра.

PHP демо :

$input_values = "test input, val input, input 1, input 2, input 3,4";
$regex = '/(?<!\d(?=.\d)),/';
$subst = '~';
$initial_input = preg_replace($regex, $subst, $input_values);
print_r($initial_input);
// => test input~ val input~ input 1~ input 2~ input 3,4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...