不匹配正则表达式

不匹配正则表达式

我有一个安装自定义 JBoss 的 Bash 脚本。根据正则表达式检查 JBoss 实例的名称以确保该名称有效:

if [[ ! $1 =~ $instanceNameRegex ]]; then
    exit 1
fi

我们现在需要第二个有效的正则表达式。即名称必须匹配$instanceNameRegex$secondInstanceNameRegex

我如何在if测试中实现这一目标?我正在寻找这个,但我无法让它工作:

if [[ [ ! $1 =~ $instanceNameRegex ] -a [ ! $1 =~ $secondInstanceNameRegex ] ]]; then

即,如果参数与第一个正则表达式不匹配并且与第二个正则表达式也不匹配,则退出。

答案1

你可以做

if [[ ! $1 =~ $instanceNameRegex && ! $1 =~ $secondInstanceNameRegex ]]; then

我会用:

if [[ ! ( $1 =~ $instanceNameRegex || $1 =~ $secondInstanceNameRegex ) ]]; then

答案2

这可能对你有用:

if [[ ! $1 =~ "${instanceNameRegex}|${secondInstanceNameRegex}" ]]; then

相关内容