2016-09-04 6 views
5

Javascript RegEx'imi yalnızca belirli modellerle eşleştirmek için uyarlamam gerekiyor. RegEx, bir giriş alanını doğrulamak için html5 pattern özniteliğinde kullanılır.JS RegEx yalnızca belirli modellerle eşleşiyor

yalnızca aşağıdaki türleri alfanümerik modelini kabul etmek istiyorum:

A-AAAA veya BB-BBB (amaçlanan paternidir: önce 1 basamak - "-" den sonra ve 4 basamak "", veya "-" dan 2 rakam ve "-") sonra 3 rakam.

Benim şu anki RegEx geçerli:

/([\w]{1,2})(-([\w]{3,4}))/g 

Bu seferki istenen kalıpla çalışır, ancak belli ki geçerli bir giriş deseni olan, hem de CC-CCCC kabul değil. DDD-DDDD'yi de kabul ediyor; tekrar geçerli, ancak amaçlanmamış.

Deseni uyarlamaya yardımcı olabilir misiniz? (Bu örtülü çapa sahip gibi)

+2

Başlama ve bitiş çapalarını kullanın ve 2 deseninizi '|' ile ayırın. https://regex101.com/r/uV8gI4/1#javascript –

+1

@quint 'pattern' regexp'lerinde ankrajlara gerek yoktur. –

+0

@torazaburo: Evet, haklısınız. İyi bir nokta! –

cevap

2

Sen HTML5 pattern Özellikte münavebe bazlı normal ifadeler kullanabilirsiniz:

/(?:\w-\w{4}|\w{2}-\w{3})/ 

RegEx Demo

+1

'\ b''nin amacı nedir? Ya da yakalamayan grup? –

+1

Çok teşekkür ederim. Bu benim sorunumu çözdü! – Otto

+0

@torazaburo: '\ b' bu düzenli ifadede kelime sınırı için kullanılır. – anubhava

0

başka basit münavebe örnek:

/^\w-\w{4}$|^\w{2}-\w{3}$/ 
+0

Evet, ancak çapalar gerekli değildir. –

0

O biraz daha kısa olabilir

/\w(-\w|\w-)\w{3}/