Regex JavaScript-да жарамсыз

Бұл регистр JavaScript-да жарамсыз. Онда жарамсыз топ бар екенін айтады. Біреу оны маған көмектесуге көмектесе алады ма?

(?i)^(?![\. -])(?!.*[\. -]$)[\w!$%'*+/=?^`{|\.}~ -]{1,64}$
3

2 жауаптар

Update: Updating as per suggestions given in comments.

Оның орнына осы үш сөздердің бірін пайдаланыңыз. Бұл (? I) бөлігін түзетіп, Javascript сипаттамаларын сәйкестендіру үшін қажетті қашуды қосып, дәл сол regex.

var regex = new RegExp("^(?![\\. -])(?!.*[\\. -]$)[\\w!$%'*+/=?^`{|\\.}~ -]{1,64}$", "i");
var regex = new RegExp('^(?![\\. -])(?!.*[\\. -]$)[\\w!$%\'*+/=?^`{|\\.}~ -]{1,64}$', "i");
var regex =  /^(?![\. -])(?!.*[\. -]$)[\w!$%'*+/=?^`{|\.}~ -]{1,64}$/i;

Егер сіз regex объектісін құру үшін new RegExp қолданып жатсаңыз, онда барлық кері соққылардан аулақ болуыңыз керек. Бірінші және екінші өрнектің айырмашылығы екіншісі regex жолын салу үшін жалғыз тырнақшаларды пайдаланады және сіздің тізіліміңіздің бөлігі ретінде бірыңғай тырнақша бар, сондықтан оны дұрыс жұмыс істеу үшін бірыңғай тырнақшадан аулақ болу керек. Үшінші өрнек regex нысанын құру үшін /pattern/flags синтаксисін пайдаланады. Майк түсініктемеде көрсетілгендей, егер ол таңбалар жиыны ішінде болмаса, / қашып кетуіңіз керек. Сіздің барлық / - бұл таңбалар жиынтығы, сондықтан ешқандай құтылу қажет емес.

Check out more on JavaScript regex syntax here https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

4
қосылды
Әрине. Мен ОС-ның бұл туралы білетініне көз жеткізгім келеді. Егер ол new RegExp пайдаланатын болса, онда ол \ `символдардан құтылу керек. Мен ОС өз регистрін пайдаланатын контекст туралы сенімді емеспін.
қосылды автор Narendra Yadala, көзі
@MikeSamuel Ақпарат үшін рақмет, жауапты жаңарттым.
қосылды автор Narendra Yadala, көзі
/ - бұл мәселе емес, себебі ол таңба тобында болады. /[/]/ - бұл әдеттегі қалыпты өрнек. 15.10.1 анықтайды ClassAtomNoDash :: SourceCharacter, бірақ \ немесе] немесе - | \ ClassEscape
қосылды автор Mike Samuel, көзі
@ridgerunner. Қарап көріңіз. /[/]/ кез келген негізгі аудармашыда жұмыс істейтін болады. Таңбалар тобына арналған шектегіш / емес, ClassAtomNoDash ] дегенді білдірмейді, бірақ /.
қосылды автор Mike Samuel, көзі
Қашқақталмаған алға қиылысу Darthg8r үшін қиындық тудырмайды: new RegExp ('a/b') сияқты нәрсе өте жарамды. /a/b/ дұрыс емес еді, бірақ Darthg8r егер ол жасаған болса, «жарамсыз топ» қате туралы хабарды алмайды.
қосылды автор ruakh, көзі
Бірақ, +1, себебі сіздің кодыңыз жұмыс істейді. :-)
қосылды автор ruakh, көзі
@Mike Samuel - Жоқ, / барлық жерде, тіпті егер regex JavaScript арқылы көрсетілсе, сыныптың ішіне кіріп кетуі керек: /regex/flags literal regex синтаксисі. / - regex бөлгіш.
қосылды автор ridgerunner, көзі
@Mike Samuel - Жақсы болдыңыз! (/[/]/ барлық тестілеу шолғыштарында жұмыс істейді: IE6, FF2 және Opera-11). Түзету үшін рақмет. (Күн сайын жаңа нәрсені біліп алыңыз!)
қосылды автор ridgerunner, көзі
(?i)

Javascript regex ішіндегі режимді модификаторларды қолдамайды.

3
қосылды