2016-09-20 1 views
-2

Мой currentWebsiteURL:вар currentWebsiteURL не распознает текущее PAG

вар currentWebsiteURL = window.location.protocol + '//' + window.location.hostname + window.location.pathname;

+0

Чего вы хотите достичь? Не могли бы вы включить фрагмент кода или какой-нибудь сценарий? –

+0

У меня вопрос об этом, потому что регулярное выражение явно работает (просто протестировало его в консоли). Вы просто пытаетесь сопоставить последовательные буквенно-цифровые символы в URL-адресе, который, вероятно, содержит также не буквенно-цифровые символы. –

ответ

1

Вам необходимо добавить следующие модификаторы gi,

g modifier: global. All matches (don't return on first match) 

i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z]) 

i является необязательным, если вам нужно регулярное выражение, чтобы быть нечувствительными.

В настоящее время ваш код будет искать первый матч и остановиться.

Так что код будет как

var s = currentWebsiteURL.match(/\w{17}/gi); 
window.alert(s); 

Update

Примечание:

/\w{17}/gi 

означает, что он будет разделить строку на куски, каждый кусок 17 Длина символа.

Если вы хотите, чтобы получить переменную с 17 символов или менее, вы должны использовать следующее регулярное выражение:

/\w{0,17}/gi 

Если переменная содержит другие специальные символы, такие как #, /, -. так что вам нужно, чтобы включить их в регулярных выражениях

Что-то вроде этого:

/[\w\+\&\@\#\/\%\?\=\~\_\|\$\!\:\,\.\;\-\&\@\#\/\%\=\~\_]{17}/gi 
+0

Я пробовал var s = currentWebsiteURL.match (/ \ w {17}/gi); Это не сработало. –

+0

Не могли бы вы дать мне образец вашего ** currentWebsiteURL ** переменной – developer

+0

var currentWebsiteURL = window.location.protocol + "//" + window.location.hostname + "//" + window.location.pathname + "//" + window.location.href + "//" + window.location.assign; –

0

Предположительно, ваш URL просто не содержит 17 последующие буквенно-цифровые знаки. Сравнить:

// Returns null 
"sssss.ssssssss.ssssss.sssss.ssss".match(/\w{17}/); 

// Returns ["sssssssssssssssss"] 
"ssssssssssssssssssssssssssss".match(/\w{17}/); 

Пересмотрите то, чего вы хотите достичь, затем попытайтесь сделать правильное регулярное выражение.

+0

Эти символы я ищу: 1dowHcSE6s0Ms0IZcEbO1zENtUJA3E2KSq. Они находятся в файле. Извините, мой английский очень плохой. –

+0

@ Cylond'Sousa '" 1dowHcSE6s0Ms0IZcEbO1zENtUJA3E2KSq ".match (/ \ w {17} /);' возвращает '[" 1dowHcSE6s0Ms0IZc "]'. Ваш английский не является проблемой.Проблема в том, что вы не предоставили всю информацию о своей проблеме. Что ты пытаешься сделать? Что такое ** точная ** строка, которую вы пытаетесь сопоставить? –

+0

ОК, я нашел ошибку. Томаш Сато, вероятно, прав. Я разрешу и вернусь с ответом. –