Один лайнер:
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
или
С помощью jQuery я использую этот:
var url = "http://google.com";
$("<a>").attr("href", url).attr("target", "_blank")[0].click();
Он создает виртуальную a
элемент, дает ему target="_blank"
, поэтому он открывается в новой вкладке, дает ему url
href
и затем нажимает на него.
И если вы хотите, на основе этого вы можете создать некоторую функцию:
function openInNewTab(url) {
$("<a>").attr("href", url).attr("target", "_blank")[0].click();
}
, а затем вы можете использовать его как:
openInNewTab("http://google.com");
Для сценария, отличного от jQuery, функция будет выглядеть так:
function openInNewTab(url) {
var a = document.createElement("a");
a.target = "_blank";
a.href = url;
a.click();
}
// And then
openInNewTab("http://google.com");
Звездочка - это только оператор повторения , но вам нужно сказать, что вы повторяете. /*abc*/
соответствует строке, содержащей ab и ноль или больше c (потому что второй * находится на c; первый не имеет смысла, потому что ему нечего повторять). Если вы хотите что-то сопоставить, вам нужно сказать .*
- точка означает любой символ ( в определенных рекомендациях ). Если вы хотите просто совместить abc, вы можете просто сказать grep 'abc' myFile
. Для вашего более сложного соответствия вам нужно использовать .*
- grep 'abc.*def' myFile
будет соответствовать строке, содержащей abc, затем def с чем-то опционально между ними.
Обновление на основе комментария:
*
в регулярном выражении не совсем совпадает с * в консоли. В консоли * является частью glob construct и просто выступает в качестве подстановочного знака (например, ls *.log
перечисляет все файлы, которые заканчиваются на .log). Однако в регулярных выражениях * является модификатором, что означает, что он применяется только к предшествующему ему персонажу или группе. Если вы хотите, чтобы в регулярных выражениях * в качестве подстановочных знаков вам нужно было использовать .*
, как указано выше, точка является символом подстановки, а звезда при изменении точки означает поиск одной или нескольких точек; то есть. найдите один или несколько символов.
Вы не используете регулярные выражения, поэтому ваш вариант выбора grep должен быть fgrep
, который будет вести себя так, как вы ожидаете.
Использовать grep -P - который позволяет поддерживать регулярные выражения в стиле Perl.
grep -P "abc.*def" myfile
Попробуйте grep -E для расширенной поддержки регулярных выражений
Также посмотрите:
'*' работает как модификатор для предыдущего элемента. Таким образом, «abc * def» ищет «ab», за которым следуют 0 или более «c», которые следуют «def».
То, что вы, вероятно, хотите, это «abc. * Def», который ищет «abc», за которым следует любое количество символов, указанное «def».
«Звездный знак» имеет смысл только в том случае, если перед ним что-то есть. Если инструмент отсутствует (grep в этом случае), можно просто рассматривать его как ошибку. Например:
'*xyz' is meaningless
'a*xyz' means zero or more occurrences of 'a' followed by xyz
Это может быть ответ, который вы ищете:
grep abc MyFile | grep def
Единственное, что есть ... он будет выводить строки «def» перед OR после «abc»
Символ точки означает совпадение с любым символом, поэтому «. *» означает ноль или более вхождений любого символа. Вероятно, вы хотите использовать «. *», А не просто «*».
Ах, дерьмо,
Выражение, которое вы пытались использовать, например, те, которые работают в командной строке оболочки в Linux, называется « glob ». Выражения Glob не являются полными регулярными выражениями , что и используется grep для указания строк для поиска. Здесь (старая, маленькая) запись о различиях. Выражения glob (как в «ls *») интерпретируются самой оболочкой.
Можно перевести из globs в RE, но вам обычно нужно сделать это в своей голове.
*
означает «0 или более», а grep по умолчанию является жадным. Обратите внимание, что в регулярных выражениях grep basic метасимволы?
,+
,{
,|
,(
и)
теряют свое особое значение. Дополнительная информация: grep regexps – KrisWebDev 17 October 2015 в 19:07