2016-09-27 2 views
3

150 단어 이하를 허용하는 정규 표현식이 필요합니다. 나는 몇 가지 표현을 시도했지만 모두 그 단어가 아니라 문자를 셉니다.150 단어 개수 정규식

내 시도 :

^(?:\b\w+\b[\s\r\n]*){1,150}$ 
^(?:\w+\W+){0,150}(?:\w+)$ 
^(\w*\W*){0,250}$ 
+0

귀하의 표현은 조금 혼란이지만, 내가 제대로 일을 이해한다면, 당신은 아마'같은 싶다 "\의 W의 *를 (/ +/W의 * w) {0150}"'. – XenoRo

+0

정말 고마워요. 나는 정규 표현식으로 150 단어 이상을 작성해서는 안된다는 것을 의미했다. 내 양식의 텍스트 영역에이 유효성을 설정하고 싶습니다. 나는 이것을 시도 할 것이다. 정말 고마워. – KH2301

+0

모든 단어가 함께 붙으면 어떨까요? 사이에 공간이 없습니까? – revo

답변

0

당신이 정규 표현식을 사용하여 입력을 제한하여 무슨 뜻인지 확실하지. regex는 패턴을 추출하거나 일치시키는 데 사용됩니다. 이 정보를 사용하여 입력을 제한 할 수 있습니다.

아래 정규 표현식은 150 단어로 된 문장과 일치합니다.

^(?:\s*\S+){1,150}$ 

^ Anchor to the beginning of the input 
$ Anchor to the endof the input 
\s: Space character 
\S: Non space character 
(?:xxx): Grouping without capturing 
{1,150} : Match 1 - 150 instances of the preceding expression 

나는

I am happy. This is good 
I am happy . This is good 

당신은 제거 할 수 있습니다 각각 6 개 단어와 일곱 개 단어로 만든로 인해 기간 전에 공간으로, 아래의 문장을 계산하기 때문에, 단어를 큰 따옴표를 사용^및 $ 기호를 사용하여 원하는 경우 처음 150 단어 만 추출 할 수 있습니다.

+0

정말 고마워요. 나는 정규 표현식으로 150 단어 이상을 작성해서는 안된다는 것을 의미했다. 내 양식의 텍스트 영역에이 유효성을 설정하고 싶습니다. 나는 이것을 시도 할 것이다. 정말 고마워요 – KH2301

+0

이 정규식에 문제가있을 것입니다 ... 이것은 단어가 아닌 구분 기호 (공백) 문자를 기반으로하기 때문에 구두점과 같은 느슨한 비 공백 문자를 단어로 계산하고 하이픈으로 묶어서 단일 문자를 합성합니다 워드. – XenoRo

0
^\w+(?:\s+\w+){0,149}$ 

이렇게하면됩니다.

5의 데모보기

https://regex101.com/r/bT4kP8/2

+0

정말 고마워요. 나는 이것을 시도 할 것이다. 정말 고마워. – KH2301

+0

이 정규식에는 문제가있다. 입력이 단어가 아닌 문자로 시작하면 전체 정규식이 실패합니다. 또한 단어 사이의 공백 문자 만 처리 할 수 ​​있으며 첫 번째 단어 사이에 적어도 하나의 공백 문자가 필요하므로 구두점 또는 하이픈 단어에서 정규식이 실패하게됩니다. – XenoRo

+0

@AlmightyR 만약 OP가 그걸 원한다면 나는 덧붙일 것이다 : ... – vks