Строка регулярного выражения сравнивает игнорирующие символы

У меня есть две переменные:

varAdditionalTeamAddress = ;; MountainWestITSupport@somedomain.com

VariableAddTeamEmails =  ; MountainWestITSupport@somedomain.com;

Эти две переменные используются для объединения и сбора дополнительных писем группы поддержки. Но в процессе объединения, если электронные письма пусты, появляются только точки с запятой.

Мне нужно сравнить эти две переменные (игнорируя;), чтобы увидеть, равны ли они. Можем ли мы написать регулярное выражение для извлечения всех точек с запятой и пробелов из этой строки электронной почты, чтобы они были сопоставимы?

Как и в случае выше, если бы я очистил их, исключив пробелы и точки с запятой, тест на равенство вернул бы ИСТИНА.

Регулярные гуру, пожалуйста, помогите. PS Мне нужен REGEX способ сделать это.

3 ответа

Решение

Ты можешь сделать:

varAdditionalTeamAddress = varAdditionalTeamAddress.replace(/^[ ;]+/, "");

VariableAddTeamEmails = VariableAddTeamEmails.replace(/^[ ;]+/, "");

удалить любую комбинацию ; и пространство от начала ваших переменных.

Если вы используете Windows PowerShell, то вы можете сделать это

$varAdditionalTeamAddress = ";; MountainWestITSupport@somedomain.com"
$VariableAddTeamEmails = " ; MountainWestITSupport@somedomain.com;"

if ( ($varAdditionalTeamAddress.Trim() -replace '(;+|\s)','') -eq ($VariableAddTeamEmails.Trim() -replace '(;+|\s)','')){
    Write "Email Strings are equal"
}else{
    Write "They Seem to different"
}

Извините за сжатый код:

if( 
     VariableAddTeamEmails.match( /\w+@\w+\.\w+/g ).indexOf( 
          varAdditionalTeamAddress.match( /\w+@\w+\.\w+/g )[ 0 ] )  
     ) != -1
){
 // ...
}

Мое регулярное выражение не совсем лучший способ получить адресную почту. На StackOverFlow много тем.

Другие вопросы по тегам