2013-03-18 4 views
0

Мой регулярное выражение следующийПростой регулярное выражение не работает в Javascript

/^(\.\w*)|(\d*\.?\d*)$/ 

он должен хорошо работает для чисел с плавающей точкой (123.23, 12., .56) и любые слова, которые начинаются с точки.
я был смущен, когда
/^(\.\w*)|(\d*\.?\d*)$/.test("qweasdzxc"); // return true
но без ИЛИ:

/^(\.\w*)$/.test("qweasdzxc"); // return false 
/^(\d*\.?\d*)$/.test("qweasdzxc"); // return false 

На RegexPal все работает хорошо

+1

эквивалентные выражения без OR являются '^' и '(\ d * \ \ d *.?) $' И последний 'true' (\ \ ш *.). –

ответ

1

Попробуйте

/^((\.\w*)|(\d*\.?\d*))$/.test("qweasdzxc"); // false 
/^((\.\w*)|(\d*\.?\d*))$/.test(".5"); // true 

Вы должны инкапсулировать регулярки условия (A | B) ,

+0

Спасибо, он хорошо работает – Ilya

2

Это должно быть

/^((\.\w*)|(\d*\.?\d*))$/ 

Вы должны обернуть оба или условия в другом (..).

Другой мудрый он интерпретируется как ^(\.\w*) или (\d*\.?\d*)$ вместо ^ и ((\.\w*) или (\d*\.?\d*)) и $.

Демо: Fiddle

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