带or操作的PHP正则表达式
我想在以下字符串上使用正则表达式:带or操作的PHP正则表达式,php,regex,wildcard,Php,Regex,Wildcard,我想在以下字符串上使用正则表达式: 1-* or *-2. 这就是我到目前为止的想法: "/(.*\-2)||(1\-.*)/" 但它似乎不起作用——不管输入字符串是什么,它每次都返回true 如何创建正则表达式来匹配这些字符串?试试这个 "/(.+-\2)|(\1-.+)/" 试试这个 "/(.+-\2)|(\1-.+)/" 尝试此操作您需要添加“^”和“$”以匹配整个字符串: /^(1-0|0-2)$/ 或: 选择适合您需要的内容尝试此操作,您需要添加^1和$2以匹配整个字符串:
1-* or *-2.
这就是我到目前为止的想法:
"/(.*\-2)||(1\-.*)/"
但它似乎不起作用——不管输入字符串是什么,它每次都返回true
如何创建正则表达式来匹配这些字符串?试试这个
"/(.+-\2)|(\1-.+)/"
试试这个
"/(.+-\2)|(\1-.+)/"
尝试此操作您需要添加“^”和“$”以匹配整个字符串:
/^(1-0|0-2)$/
或:
选择适合您需要的内容尝试此操作,您需要添加^1和$2以匹配整个字符串:
/^(1-0|0-2)$/
或:
选择适合您需要的选项试试这个(简单化的)版本:
如果需要更具体的匹配,请在相应的位置添加[0-9]
,也可以添加另一个锚(^$
)
试试这个(过于简单的)版本:
如果需要更具体的匹配,请在相应的位置添加[0-9]
,也可以添加另一个锚(^$
)
不,这返回false:preg_match(“/(.1-)/”,“1-0”)不,这返回false:preg_match(/(.1-)/”,“1-0”)不,这返回false:preg_match(“/(.1-)/”,“1-0”),这也返回false:preg_match(/(.1-)$/”,“1-0”),这返回false:preg_match(“/(.9*)-”,“1-9-”,“1-0”)和“1-0”)我想匹配;我希望2-0和0-1不及格。你前面的第二个答案行得通。非常感谢。你说:/^(1-.*.*.*-2)$/不,这个返回false:preg_match(“/^(+-\2)|”(\1-.+)$/”,“1-0”),这个也返回false:preg_match([1-9*]-[*1-9])$/”,“1-0”),我希望1-0和0-2匹配;我希望2-0和0-1不及格。你前面的第二个答案行得通。非常感谢。你这样说:/^(1-.*.*-2)$/我喜欢你以前的答案;它简单而优雅:/^1-|-2$/@MrGoobri:但不正确;)它将分组为
/^1(-)2$/
,因此只匹配字符串1-2
,这将返回true:preg_match(“/^1-|-2$/”,“3-2”)@MrGoobri:oh right。我混淆了正则表达式中的优先规则:-$我喜欢你以前的答案;它简单而优雅:/^1-|-2$/@MrGoobri:但不正确;)它将分组为/^1(-)2$/
,因此只匹配字符串1-2
,这将返回true:preg_match(“/^1-|-2$/”,“3-2”)@MrGoobri:oh right。我混淆了正则表达式中的优先规则:-$
/(^1-[0-9]$|^[0-9]-2$)/