Регулярное выражение для сопоставления числового пиньинь

Я ищу регулярное выражение для соответствия числовой лексической единице пиньинь (один или несколько пиньинь без пробела).

Чтение Regex для сопоставления пиньинь кажется хорошим началом, так как я смог быстро добавить поддержку numeral, выполнив:

/(ORIGINAL_REGEXP)[0-5]/

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

jiao4zuo4zhi1wu4    叫座之物
jiao4zu3    教祖
jiao4zong1xuan3ju3  教宗选举
jiao4zi3    教子
jiao4zhun3yi2qi4    校准仪器
jiao4zhun3tiao2     校准条
jiao4zhun3ti1chi3   校准梯尺
jiao4zhun3quan1     校准圈
jiao4zhun3qi4   校准器
jiao4zhun3pu3   校准谱 

Примечание: это выражение будет использоваться в контексте Javascript.


person Édouard Lopez    schedule 03.06.2014    source источник
comment
Какие шаблоны конкретно вы пытаетесь сопоставить? Я думаю, что ваш вопрос мог бы выиграть от дополнительной информации.   -  person mareoraft    schedule 03.06.2014


Ответы (2)


Возможно, я неправильно интерпретирую ваш вопрос, но не могли бы вы просто добавить + для одного или нескольких пиньинь? т.е.

/((ORIGINAL_REGEXP)[0-5])+/
person EagleV_Attnam    schedule 03.06.2014
comment
вау, я действительно устал скучать по этому, спасибо. Есть еще несколько случаев, когда он ведет себя неадекватно: он допускает пробелы, сопоставляет рабочую строку, содержащую допустимый пиньинь, и т. д. - person Édouard Lopez; 03.06.2014

Вот регулярное выражение, которое я использую на основе решения @EagleV_Attnam и некоторых дополнений, которые я сделал:

/^((ORIGINAL_REGEXP)[0-5])+$/

Добавление начального ^ и конечного $ якоря решает мои проблемы :)

Полное регулярное выражение:

/^((([mM]iu|[pmPM]ou|[bpmBPM](o|e(i|ng?)?|a(ng?|i|o)?|i(e|ng?|a[no])?|u))|([fF](ou?|[ae](ng?|i)?|u))|([dD](e(i|ng?)|i(a[on]?|u))|[dtDT](a(i|ng?|o)?|e(i|ng)?|i(a[on]?|e|ng|u)?|o(ng?|u)|u(o|i|an?|n)?))|([nN]eng?|[lnLN](a(i|ng?|o)?|e(i|ng)?|i(ang|a[on]?|e|ng?|u)?|o(ng?|u)|u(o|i|an?|n)?|ve?))|([ghkGHK](a(i|ng?|o)?|e(i|ng?)?|o(u|ng)|u(a(i|ng?)?|i|n|o)?))|([zZ]h?ei|[czCZ]h?(e(ng?)?|o(ng?|u)?|ao|u?a(i|ng?)?|u?(o|i|n)?))|([sS]ong|[sS]hua(i|ng?)?|[sS]hei|[sS][h]?(a(i|ng?|o)?|en?g?|ou|u(a?n|o|i)?|i))|([rR]([ae]ng?|i|e|ao|ou|ong|u[oin]|ua?n?))|([jqxJQX](i(a(o|ng?)?|[eu]|ong|ng?)?|u(e|a?n)?))|(([aA](i|o|ng?)?|[oO]u?|[eE](i|ng?|r)?))|([wW](a(i|ng?)?|o|e(i|ng?)?|u))|[yY](a(o|ng?)?|e|in?g?|o(u|ng)?|u(e|a?n)?))[0-5])+$/
person Édouard Lopez    schedule 03.06.2014