2010-01-07 5 views
1

ЧтоЧто означает /.*=/, '' означает в var id = this.href.replace (/.*=/, '') ;?

/.*=/,'' 

означает в

var id=this.href.replace(/.*=/,''); 

?

Полный код

function delete_subscriber(){ 
var id=this.href.replace(/.*=/,''); 
this.id='delete_link_'+id; 
if(confirm('Are you sure you want to delete this subscriber?')) 
$.getJSON('delete.php?ajax=true&id='+id, remove_row); 
return false; 
} 

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

Пожалуйста, помогите.

ответ

4

Это regular expression.

Конкретный синтаксис здесь выглядит следующим образом (комментарии после # ы):

/ # Begin an expression 
.* # Match all characters 
= # Until an equals sign is met 
/ # End the expression 

Остальное это функция, которая заменяет все, что сопоставляется этим регулярным выражением и удалить его.

+2

не только до знака =, но до последнего символа в этой строке. –

+1

Как уже упоминалось в ответе mopoke: по умолчанию '.' (DOT) не соответствует разрыву строк. Поскольку этот ответ кажется приемлемым, я также упомянул об этом здесь. –

11

Он заменяет любой символ (кроме разрывов строк) вплоть до последнего знака равенства с ничем. Поэтому, учитывая этот текст:

"I am some text before=and I am some text after" 

Вы хотите получить:

"and I am some text after" 

И учитывая этот текст:

"I am some text before=and I am in between=and I am after" 

вы получите:

"and I am after" 
+0

Любой символ, кроме разрывов строк. –

+0

+1, вплоть до «последнего» знака равенства. – sberry

+0

@Bart K. - хороший вызов на разрыве линии. Ред. – mopoke

2

Это значит, принимать все, вплоть до и включая знак равенства и заменить его ни с чем, так что потребуется что-то вроде

http://yourserver.com/blah/blah/blah/id=20 and change it to 20. 
2

Вот более подробное объяснение:

/.*=/,'' 
  • // обозначает регулярное выражение
  • . обозначает любой символ, за исключением новой строки
  • * означает 0 или любое число (любого характера в данном случае)
  • = буквально означает, что равняется символу
  • '' является строка, с которой она заменяется (т.е. ничего)
1

The /. =/представляет собой _ррегулярное выражение_, которое соответствует: во-первых, последовательность любого символа (представленная «»), вторая и, наконец, сопоставление буквально символа, равного ('='), как определено самим символом. Символы '/' ограничивают регулярное выражение.

Звонок replace() передает пустую заменяющую строку. Цель такого вызова заменить - удалить соответствующий текст. Таким образом, этот вызов удаляет текст слева от знака равенства и сам знак равенства.

В контексте общей функции идентификатору присваивается значение всего текста после знак равенства на текущей странице href. Таким образом, этот код распаковывает URL-адрес для получения параметров, отмеченных наличием знака равенства в URL-адресе, он появляется.

0

Слэши начинают/заканчивают регулярное выражение. Период соответствует любому символу. Звездочка означает соответствие любому числу (ноль или более) предыдущего выражения (любой символ). Знак равенства буквально соответствует знаку равенства. Итак, «. = = Означает что-нибудь (в том числе ничего вообще), за которым следует знак равенства. Второй параметр to shits function, '', является пустой строкой, поэтому соответствующая строка будет удалена (заменена ничем).

Одним словом, этот фрагмент удалит что-либо до и включит знак равенства из строки (this.href, текущий URL). Таким образом, он будет извлекать, например. «42» из foo.php? id = 42.

Смежные вопросы