object1 = {item: "car"};
array1=[1,2,3];
здесь вы назначаете новый объект или массив старым. Вы не меняете значение свойства старого объекта. Так что это пропуск по значению. если вы изменяете значение свойства объекта или массива, то оно передается по ссылке. object1.key1= "car";
array1[0]=9;
здесь вы меняете значение свойства старого объекта. Вы не назначаете новый объект или массив старым. Также он передается по ссылке. Код
function passVar(object1, object2, number1) {
object1.key1= "laptop";
object2 = {
key2: "computer"
};
number1 = number1 + 1;
}
var object1 = {
key1: "car"
};
var object2 = {
key2: "bike"
};
var number1 = 10;
passVar(object1, object2, number1);
console.log(object1.key1);
console.log(object2.key2);
console.log(number1);
Output: -
laptop
bike
10
Вы хотите что-то вроде этого: ( видеть его в действии на rubular.com ):
^\s*\S+\s*$
Объяснение:
^
является началом привязки строки $
является концом привязки строки \s
является символьным классом для пробелов \S
является отрицанием \s
(обратите внимание на разницу в верхнем и нижнем регистре) *
является повторением «нуль или больше» +
является «одним Вышеупомянутый шаблон NOT , например, пустая строка. Исходная спецификация не очень ясна, если это предполагаемое поведение, но если пустым «текстом» разрешено, просто используйте вместо него \S*
, т. Е. Сопоставьте ноль -или-больше (вместо one -or-more) повторение \S
.
Таким образом, этот шаблон (такой же, как выше, кроме *
используется вместо +
)
^\s*\S*\s*$
будет соответствовать:
Вышеупомянутые шаблоны используют \S
для определения символов «текст», т.е. ничего, кроме пробелов. Это включает в себя такие вещи, как пунктуации и символы, т. Е. Строка " #@^$^* "
соответствует обоим шаблонам. Неясно, является ли это желаемым поведением, т. Е. Возможно, что " ==== AWESOMENESS ==== "
является желаемым совпадением
. Шаблон все еще работает даже для этого случая, нам просто нужно быть более конкретным с нашими определениями класса символов.
Например, этот шаблон:
/^[^a-z]*[a-z]*[^a-z]*$/i
Будет соответствовать (, как показано на rubular.com ):
==== AWESOMENESS ====
Но не:
==== NOT AWESOME ====
Обратите внимание, что метасимвол ^
, используемый в качестве символа первого в определении класса символов, больше не означает начало строкового якоря , а скорее отрицание определения класса символов.
Обратите также внимание на использование модификатора /i
в шаблоне: это позволяет не учитывать регистр символов. Фактический синтаксис может варьироваться между языками / ароматами.
java.util.regex.Pattern.CASE_INSENSITIVE
- встроенный флаг (?i)
Это должно сделать это:
^\s*\S+\s*$
" aaadadadad "
=> соответствует " aaa aaaaa "
=> не соответствует Просто нашел ответ сам. Поэтому я пишу это здесь, чтобы это могло быть полезно для кого-то другого. ^\s*\S*\s*$
*
и +
для всех трех частей.
– polygenelubricants
11 June 2010 в 08:25
\S
являются излишними.
– Tim Pietzcker
11 June 2010 в 08:46
*
как индикаторы для курсива и **
для жирного текста. Это одна из причин, по которой вам нужно окружать образцы кода обратными окнами (как и вы) или отступать их на 4 пробела.
– Tim Pietzcker
11 June 2010 в 08:48
\S
, поскольку у вас есть это здесь, чтобы предотвратить пробелы в моей проверке строки, но не долго. Не могли бы вы взглянуть сюда? [Д0] stackoverflow.com/questions/43764025/… – Leon Gaban 3 May 2017 в 15:20