2013-04-02 3 views
3

Я пытаюсь написать RegExp, который соответствует каждому, кроме букв. До сих пор, я написал что-то вроде этого:RegExp, который соответствует всем, кроме букв

/[^a-zA-Z]+/ 

Однако в ходе испытаний, я обнаружил, что он хорошо работает, когда я пишу, например: «Qwe» или «qqqqqweqwe123123» или что-то подобное, но когда Я начинаю String от числа например: '1qweqwe', он не соответствует.

Что мне нужно сделать, чтобы соответствовать всем, кроме букв в любой позиции моего ввода String?

Заранее спасибо.

Edit: Правильно RegExp я нашел:

/^[^a-zA-Z]*$/ 
+1

'/ [^ A-Za-Z] + /. test ('1qweqwe') 'дает' true'. –

+0

@Jack Это решение не сработало для меня. Я нашел правильный RegExp следующим образом:/^ [^ a-zA-Z] * $/ – kmb

ответ

3

What do I have to do yet to match everything except letters at any position of my input String?.
Вы должны использовать регулярные выражения флаги для достижения этой цели

попробовать этот

'1qwe2qwe'.match(new RegExp(/[^a-zA-Z]+/g)) 

он должен вернуть ["1", "2"]

на g флаг в конце регулярного выражения говорит регулярное выражение двигатель, чтобы сохранить обходе строку после он нашел одно совпадение. Без флага g он просто отказывается от обхода при поиске первого матча. Вы можете найти ссылку here

+1

Ваше решение не сработало для меня. Я нашел правильный RegExp следующим образом:/^ [^ a-zA-Z] * $ / – kmb

0

Ваше регулярное выражение не закреплено, поэтому оно даст true для частичных совпадений. Если вся строка не должна содержать буквы:

if (/^[^a-zA-Z]+$/.test(str)) { 
    // all characters are not alphabetical 
} 

Или, скорее, если все символы должны быть числовой (или пустая строка):

if (/^\d*$/.test(str)) { 
    // all characters are digits 
} 
Смежные вопросы