我对正则表达式不熟悉,这可能是一个非常简单的问题(希望如此)。
我正在尝试使用一种解决方案来处理三种类型的字符串
- "45%",期望结果:“45”
- "45",期望结果:“45”
- "",期望结果:“”
我的尝试(假设字符串为str):
str.match(/(.*)(?!%*)/i)[1]
我的理解是,匹配任何一段文本,直到找到 '%',如果找到就停止匹配,并且匹配结果不包含 '%'; 如果没有找到 '%',则匹配整个文本。
在 Firebug 中,它的意思似乎更像是“匹配整个文本并完全忽略负向先行断言”。另外,使用非贪婪模式 - (.*)?
- 似乎也没有帮助。
先不考虑我这种情况只匹配数字的特殊情况,那么一个/\d*/
就可以了。我想理解一个通用的规则,以便在需要时应用它。
请问有人能帮帮我吗?
(?!%*)
表示:“断言零个或多个百分号不会跟随其后”。这种断言永远不可能成立,因为%*
总是为真! (%*
不匹配任何内容 - 这在任何地方都是 始终 为真的 - 即使对于空字符串也是如此。) - ridgerunner