我想使用正则表达式匹配包含相同变量的加法。
示例1
字符串:
5p + 3p
结果:
5p + 3p
示例2
字符串:
5AB + 3AB
结果:
5AB + 3AB
示例3
字符串:
5AB + 3BA
结果:
5AB + 3BA
示例4:
字符串:
5p + 3q
结果:
一无所有(根本不匹配)
我在下面创建了自己的正则表达式:
(\d+)(\w+)\+(\d+)(\w+)
但是我的正则表达式不满足上面的最后一个条件。
答案 0 :(得分:0)
您可以将正则表达式与其他支票相结合:
/**
* Checks a given string operation and only returns it if it's valid.
*
* @param string $operation
* @return string|null
*/
function checkOperation(string $operation): ?string
{
// Make sure the operation looks valid (adjust if necessary)
if (!preg_match('/^\d+([a-zA-Z]+)\+\d+([a-zA-Z]+)$/', $operation, $matches)) {
return null;
}
// Make sure the left and right variables have the same characters
if (array_count_values(str_split($matches[1])) != array_count_values(str_split($matches[2]))) {
return null;
}
return $operation;
}