如果使用QRegExp是逗号,如何删除第一个字符?

时间:2018-09-12 19:35:22

标签: qt qregexp qregularexpression

我有以下QRegExpValidator

QRegExpValidator doubleValidator = new QRegExpValidator(QRegExp("[-+]?[0-9]*[\\.,]?[0-9]+([eE][-+]?[0-9]+)?"));

它应该是一个接受数字的Double Number验证器,它在字符串开头或在“ e”符号之后仅接受一个“ e”符号,一个逗号或点以及一个+或-符号。它适用于每种情况,除了它允许字符串以逗号或点开头。我尝试使用 [^ \\。,] 和变体,它们确实起作用了,但是在这种情况下,它还允许放置两个+号。

如何使它正常工作?

1 个答案:

答案 0 :(得分:1)

app.post('/',(req,res) => { mongoClient.connect(url,(err,db) => { if(err){ console.log("Error:" +err); } else{ var obj = {Name : req.body.name}; var collection = db("User").collection("Users"); collection.insertOne(obj,(err,insertReponse) => { if(err){ console.log("Error:" +err); } else{ res.send("Data has been saved"); } }); } }); }); 模式允许[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?,开头,因为.[-+]?可以匹配空字符串,这是由于[0-9]* (一次或零次出现)和?(零次或多次出现)量词,然后*匹配一次一次的[.,].。此外,如果默认情况下使用的方法不锚定模式,则还需要在模式周围使用,^锚定。

我建议使用

解决该问题
$

请注意,您无需在字符类中转义点,"^[-+]?[0-9]+([.,][0-9]+)?([eE][-+]?[0-9]+)?$" ^ ^^^^^^^^^^^^^^ ^ 始终仅与点字符匹配。

[.]匹配1+个数字,然后是[0-9]+([.,][0-9]+)?.的可选序列,后跟1+个数字。