2016-07-01 3 views
2

я шел через кусок кода, и я ударился синтаксисом, что делает следующее выражение Java Script означает,

str.replace(re,function(raw, p1, p2, p3){ 
    if (!/\/\//.test(p1)) { // <---- this one 
    //some more code 
    } 
}); 

Я понимаю, что метод испытания соответствует одной строке с другой, и проверяют, если он присутствует , Но что это за регулярное выражение /\/\// соответствует строке? Я проверил регулярное выражение, и

\/ matches the character/literally \/ matches the character/literally

так что же if(!//.test(p1)) делает?

+0

if (! //. Test (p1)), соответствует всем, что ничто. // окружаем ваше регулярное выражение, поэтому/\/\ // означает соответствие регулярных выражений \/\ /, вам нужно выйти/с \. Итак, наконец,/\/\ // будет совпадать с 2/последовательными как: // toto – Destrif

ответ

5

Условное значение истинно, если строка не содержит двух последовательных косых черт.

1

Если первый захватил группу ()p1 содержит // возвращения false в if состояния путем преобразования true к false с помощью оператора !

+0

"downvote" описание? – guest271314

+0

@ ClasG _ «Здесь нет каких-либо групп захвата». _? 'p1' должна быть первой группой захвата в' RegExp'? – guest271314

+0

Я «удалил» голос. Я сосредоточился на вопросе «так что делает, если (! //. Test (p1)) делает?» - не видел всю картину – ClasG

1

\/ соответствует символу / буквально. Вышеупомянутое регулярное выражение будет выполняться, если условие, если нет двух последовательных /. Проверьте это: here