正则表达式不适用于某些用户输入

时间:2019-04-05 07:40:22

标签: php regex

我正在为以下情况构建正则表达式:

以“”分隔输入,不包括“,”之前或之后或仅在“,”之前具有数字的输入

例如: 输入:测试输入,val输入,输入1,输入2,输入3,4

输出:['测试输入','val输入','输入1','输入2','输入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 个答案:

答案 0 :(得分:1)

您可以使用

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

请参见regex demo

enter image description here

它与,匹配,该,后面没有数字,后面跟着$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 和一个数字。

PHP demo

// Update basic User's Data
exports.setUserdata = (req, res) => {
  const id = req.params.userId;
  User.update(
    {
      password: req.body.password,
      name: req.body.name,
      surname: req.body.surname,
      email: req.body.email,
    },
    { where: { id } },
  )
    .then(() => {
      res.status(200).json({ success: true });
    })
    .catch(() => {
      res.status(500).json({ error: 'Internal server error' });
    });
};