我正在学习正则表达式,我想在 Python 中使用正则表达式来仅定义整数 - 整数而不是小数。
我可以使用 \d
制作一个只允许数字的数字,但它也允许十进制数字,这是我不想要的:
price = TextField(_('Price'), [
validators.Regexp('\d', message=_('This is not an integer number, please see the example and try again')),
validators.Optional()])
如何将代码更改为仅允许整数?
最佳答案
正则表达式以字符为基础工作,\d
表示单个数字 0
...9
而不是十进制数。
只匹配带符号的整数的正则表达式可以是例如
^[-+]?[0-9]+$
意义
^
- 字符串开始[-+]?
- 可选的(这就是?
的意思)减号或加号[0-9]+
- 一位或多位数字(加号表示“一位或多位”,[0-9]
是的另一种说法>\d
)$
- 字符串结尾
注意:仅当您需要解析仅数字时,才可以将符号视为数字的一部分。对于处理表达式的更通用的解析器,最好将符号留在数字之外:像 3-2
这样的源流最终可能会被解析为两个整数的序列,而不是整数、运算符和另一个整数。我的经验是,负数可以通过在更高级别上不断折叠一元否定运算符来更好地处理。
关于整数的Python正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586346/