Я думаю, что гораздо легче проверить использование регулярного выражения и указать, какие символы разрешены, вместо того, чтобы пытаться проверить все плохие символы. См. Следующие ссылки: http://www.c-sharpcorner.com/UploadFile/prasad_1/RegExpPSD12062005021717AM/RegExpPSD.aspx http://www.windowsdevcenter.com/pub/a/oreilly /windows/news/csharp_0101.html
Кроме того, выполните поиск для редактора регулярных выражений, они очень помогают. Есть некоторые, вокруг которых даже вывести код в c # для вас.
Оба прекрасны; это явно указано в спецификации :
... Таким образом, вызов функции
Error(…)
эквивалентен выражению создания объектаnew Error(…)
с теми же аргументами.
Error
действует как фабрика, на самом деле почти все внутренние конструкторы делают: Array
, Object
, ... все проверяют что-то вроде if (!(this instanceof Array)){ return new Array(arguments);}
Это говорит о том, что в случае ошибки, даже не нужно бросать объект Error
... throw 'Bad things happened';
будет работать, также вы можете даже бросать литерал объекта для отладки:
throw {message:"You've been a naughty boy",
context: this,
args: arguments,
more:'More custom info here'};
String("abc")
не создает объект String
, тогда как new String("abc")
делает.
– pimvdb
8 November 2012 в 19:47
Object
= & gt; Object('foo')
возвращает строковый объект ... приходят к его веществу почти все собственные конструкторы i> немного ошибочны ... Number
, Boolean
, Date
, String
все дон 't ... Array
, Object
и Error
do, но Event
и все конструкторы DOMxxxx
-api вызывают ошибки
– Elias Van Ootegem
8 November 2012 в 19:49
Error
экземпляров (или строковых литералов) теряет трассировку стека. Только ссылка на связанную статью: arguments.callee
запрещена в строгом режиме
– Elias Van Ootegem
11 August 2014 в 08:25