如果第一个字符是使用 QRegExp 的逗号,如何删除它?
How to remove the first character if it's a comma using QRegExp?
我有以下 QRegExpValidator
QRegExpValidator doubleValidator = new QRegExpValidator(QRegExp("[-+]?[0-9]*[\.,]?[0-9]+([eE][-+]?[0-9]+)?"));
它应该是一个接受数字的双精度数字验证器,只有一个 "e" 符号,一个逗号或点和一个 + 或 - 字符串开头或 "e" 之后的符号符号。它适用于所有情况,除了它允许字符串以逗号或点开头。我尝试使用 [^\\.,] 和变体,它们确实有效,但在这种情况下,它还允许放置两个 +- 符号。
我怎样才能让它工作?
[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?
模式允许 ,
或 .
开头,因为 [-+]?
和 [0-9]*
可以匹配空字符串,因为 [=16] =](一次或零次出现)和 *
(零次或多次出现)量词,然后 [.,]
匹配单次出现的 .
或 ,
。此外,如果您使用的方法默认不锚定模式,您还需要 ^
和 $
锚点围绕模式。
我建议用
解决这个问题
"^[-+]?[0-9]+([.,][0-9]+)?([eE][-+]?[0-9]+)?$"
^ ^^^^^^^^^^^^^^ ^
请注意,您不需要转义字符内的点 class,[.]
始终仅匹配点字符。
[0-9]+([.,][0-9]+)?
匹配 1+ 个数字,然后是 .
或 ,
的可选序列,后跟 1+ 个数字。
我有以下 QRegExpValidator
QRegExpValidator doubleValidator = new QRegExpValidator(QRegExp("[-+]?[0-9]*[\.,]?[0-9]+([eE][-+]?[0-9]+)?"));
它应该是一个接受数字的双精度数字验证器,只有一个 "e" 符号,一个逗号或点和一个 + 或 - 字符串开头或 "e" 之后的符号符号。它适用于所有情况,除了它允许字符串以逗号或点开头。我尝试使用 [^\\.,] 和变体,它们确实有效,但在这种情况下,它还允许放置两个 +- 符号。
我怎样才能让它工作?
[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?
模式允许 ,
或 .
开头,因为 [-+]?
和 [0-9]*
可以匹配空字符串,因为 [=16] =](一次或零次出现)和 *
(零次或多次出现)量词,然后 [.,]
匹配单次出现的 .
或 ,
。此外,如果您使用的方法默认不锚定模式,您还需要 ^
和 $
锚点围绕模式。
我建议用
解决这个问题"^[-+]?[0-9]+([.,][0-9]+)?([eE][-+]?[0-9]+)?$"
^ ^^^^^^^^^^^^^^ ^
请注意,您不需要转义字符内的点 class,[.]
始终仅匹配点字符。
[0-9]+([.,][0-9]+)?
匹配 1+ 个数字,然后是 .
或 ,
的可选序列,后跟 1+ 个数字。