RegExp:如何从模式搜索中包含 'avoid non-numeric characters'?
RegExp: How do I include 'avoid non-numeric characters' from a pattern search?
我想过滤掉所有 .+[0-9].
(正确方法?)模式以避免数字中出现重复的小数点:(例如、.12345.
) ;但允许非数字包含重复的小数点:(例如 .12345*.
) 其中 *
是任何 NON-NUMERAL
.
如何将非数字否定值包含到正则表达式模式中?同样,
.12345. <-- error: erroneous numeral.<br/>
.12345(.' or '.12345*.' <-- Good.
非数字正则表达式分隔字符是 \D
。相反,如果您只查找数字,\d
会起作用。
如果没有进一步了解您要实现的目标,很难建议如何为其构建正则表达式,但根据您的示例,(我认为)这应该可行:.+\d+\D+
我想你正在寻找
^\d*(?:\.\d+)?(?:(?<=\d)[^.\d\n]+\.)?$
这里是a demo
记得在 Swift:
中正确转义正则表达式
let rx = "^\d*(?:\.\d+)?(?:(?<=\d)[^.\d\n]+\.)?$"
正则表达式解释:
^
- 字符串开始
\d*
- 可选地匹配一个数字
(?:\.\d+)?
- 匹配小数部分,0 次或 1 次(由于 ?
)
(?:(?<=\d)[^.\d\n]+\.)?
- 可选(由于 ?
在末尾)匹配 1 个或多个符号前面有一个数字(由于 (?<=\d)
向后)而不是数字 ([^\d]
),一个句号 ([^.]
) 或一个换行符 ([^\n]
)(这个更多用于演示目的),然后是一个句号 (\.
)。
$
- 字符串结尾
我正在使用非捕获组 (?:...)
以获得更好的性能和可用性。
更新:
如果您更喜欢相反的方法,即匹配无效字符串,您可以使用更简单的正则表达式:
\.[0-9]+\.
在Swift、let rx = "\.[0-9]+\."
。它匹配以点开头的任何子字符串,然后是 0 到 9 范围内的 1 个或多个数字,然后再是一个点。
我想过滤掉所有 .+[0-9].
(正确方法?)模式以避免数字中出现重复的小数点:(例如、.12345.
) ;但允许非数字包含重复的小数点:(例如 .12345*.
) 其中 *
是任何 NON-NUMERAL
.
如何将非数字否定值包含到正则表达式模式中?同样,
.12345. <-- error: erroneous numeral.<br/>
.12345(.' or '.12345*.' <-- Good.
非数字正则表达式分隔字符是 \D
。相反,如果您只查找数字,\d
会起作用。
如果没有进一步了解您要实现的目标,很难建议如何为其构建正则表达式,但根据您的示例,(我认为)这应该可行:.+\d+\D+
我想你正在寻找
^\d*(?:\.\d+)?(?:(?<=\d)[^.\d\n]+\.)?$
这里是a demo
记得在 Swift:
中正确转义正则表达式let rx = "^\d*(?:\.\d+)?(?:(?<=\d)[^.\d\n]+\.)?$"
正则表达式解释:
^
- 字符串开始\d*
- 可选地匹配一个数字(?:\.\d+)?
- 匹配小数部分,0 次或 1 次(由于?
)(?:(?<=\d)[^.\d\n]+\.)?
- 可选(由于?
在末尾)匹配 1 个或多个符号前面有一个数字(由于(?<=\d)
向后)而不是数字 ([^\d]
),一个句号 ([^.]
) 或一个换行符 ([^\n]
)(这个更多用于演示目的),然后是一个句号 (\.
)。$
- 字符串结尾
我正在使用非捕获组 (?:...)
以获得更好的性能和可用性。
更新:
如果您更喜欢相反的方法,即匹配无效字符串,您可以使用更简单的正则表达式:
\.[0-9]+\.
在Swift、let rx = "\.[0-9]+\."
。它匹配以点开头的任何子字符串,然后是 0 到 9 范围内的 1 个或多个数字,然后再是一个点。