>웹 프론트엔드 >JS 튜토리얼 >정규식 구현 단계

정규식 구현 단계

php中世界最好的语言
php中世界最好的语言원래의
2017-12-02 11:08:061871검색

이번에는 정규 표현식의 구문을 소개하겠습니다. 정규 표현식은 일반 문자와 특수 문자를 포함하는 텍스트 패턴입니다.

1. 정규식의 기본 구문

두 개의 특수 기호 '^'와 '$'. 그들의 기능은 각각 문자열의 시작과 끝을 나타내는 것입니다. 예는 다음과 같습니다.

"^The": "The"로 시작하는 모든 문자열을 나타냅니다("There", "The cat" 등).
"of 절망$": "of 절망"으로 끝나는 모든 문자열을 나타냅니다. ;
"^abc$": "abc"로 시작하고 끝나는 문자열을 나타냅니다. 하하, "abc" 자체만 나타냅니다.
"notice": "notice"가 포함된 문자열을 나타냅니다.

마지막 예와 같이 두 개의 특수 문자를 사용하지 않으면 찾으려는 문자열이 검색된 문자열의 어떤 부분에도 있음을 나타내는 것입니다. 즉, 맨 위에 위치하는 것이 아닙니다.

기타 기호로는 '*', '+', '?' 등이 있는데, 이는 문자 또는 일련의 문자가 반복적으로 나타나는 횟수를 나타냅니다. 각각 "없음 또는

이상", "한 번 이상" 및 "없음 또는 한 번"을 의미합니다. 다음은 몇 가지 예입니다.

"ab*": 문자열에 a 뒤에 0개 또는 여러 개의 b가 있음을 나타냅니다. ("a", "ab", "abbb",...);

"ab+": 문자열에 a가 하나 이상 있음을 나타냅니다.
"ab?": 문자열에 a가 하나 이상 있음을 나타냅니다. a a 뒤에는 0개 또는 1개의 b가 옵니다.
"a?b+$": 문자열 끝에 0개 또는 1개의 a가 있고 1개 또는 여러 개의 b가 있음을 의미합니다.

중괄호로 묶인 범위를 사용하여 반복 범위를 나타낼 수도 있습니다.

"ab{2}": 문자열에 a 뒤에 2개의 b가 있음을 나타냅니다("abb").

"ab{2,}": 문자열에 a 뒤에 최소한 2개의 b가 있음을 나타냅니다. " ab{3,5}": 문자열에 a 다음에 3~5 b가 있음을 나타냅니다.

범위의 하한을 지정해야 합니다(예: "{,2}" 대신 "{0,2}"). 또한 '*', '+' 및

'?'는 "{0,}", "{1,}" 및 "{0,1}"과 동일하다는 점을 눈치챘을 것입니다.

"or" 연산을 의미하는 '¦'도 있습니다.

"hi¦hello": 문자열에 "hi" 또는 "hello"가 있음을 의미합니다.

"(b¦cd)ef": "를 의미합니다. bef" 또는 "cdef";

"(a¦b)*c": "a"와 "b" 뒤에 "c"가 오는 혼합 문자열을 나타냅니다.

'.' 모든 문자를 대체할 수 있습니다:

" a .[0-9]": 문자열에 "a" 뒤에 임의의 문자와 숫자가 있음을 나타냅니다.

"^.{3}$": 임의의 3자로 구성된 문자열을 나타냅니다(길이는 3자).


대괄호는 특정 문자가 문자열의 특정 위치에 나타날 수 있음을 나타냅니다.

"[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");"^[a-zA-Z]":表示一个以字母开头的字符串;"[0-9]%":表示一个百分号前有一位的数字;",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。

또한 대괄호 안에 '^'를 사용하여 원하지 않는 문자를 나타낼 수도 있습니다. '^'는 사각형 안에 있어야 합니다. 괄호. (예: "%[^a-zA-Z]%"는 두 퍼센트 기호 사이에 문자가 없어야 함을 의미합니다.)


그대로 표현하려면 "^.$()¦*+?{" 문자 앞에 시프트 문자 ''를 추가해야 합니다.

대괄호 안에는 이스케이프 문자가 필요하지 않습니다.

2. 정규식 검증은 텍스트 상자의 입력을 제어합니다

문자 유형

1.只能输入数字和英文的:
<input onkeyup="value=value.replace(/[\W]/g,&#39;&#39;) " onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;).replace(/[^\d]/g,&#39;&#39;))" ID="Text1" NAME="Text1">
2.只能输入数字的:
<input onkeyup="value=value.replace(/[^\d]/g,&#39;&#39;) " onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;).replace(/[^\d]/g,&#39;&#39;))" ID="Text2" NAME="Text2">
3.只能输入全角的:
<input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,&#39;&#39;)" onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;).replace(/[^\uFF00-\uFFFF]/g,&#39;&#39;))" ID="Text3" NAME="Text3">
4.只能输入汉字的:
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,&#39;&#39;)" onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;).replace(/[^\u4E00-\u9FA5]/g,&#39;&#39;))" ID="Text4" NAME="Text4">
3 정규식 적용 예에 대한 인기 있는 설명

**************** ************************************************** ***************

//校验是否全由数字组成
/^[0-9]{1,20}$/
^ 表示打头的字符要匹配紧跟^后面的规则
$ 表示打头的字符要匹配紧靠$前面的规则
[ ] 中的内容是可选字符集
[0-9] 表示要求字符范围在0-9之间
{1,20}表示数字字符串长度合法为1到20,即为[0-9]中的字符出现次数的范围是1到20次。/^ 和 $/成对使用应该是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串。
//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/
^[a-zA-Z]{1} 表示第一个字符要求是字母。
([a-zA-Z0-9]|[._]){4,19} 表示从第二位开始(因为它紧跟在上个表达式后面)的一个长度为4到9位的字符串,它要求是由大小写字母、数字或者特殊字符集[._]组成。

******************************** **** *********************************************

//校验用户姓名:只能输入1-30个以字母开头的字串
/^[a-zA-Z]{1,30}$/

** ********************************************* ****** ***************************

//校验密码:只能输入6-20个字母、数字、下划线
/^(\w){6,20}$/
\w:用于匹配字母,数字或下划线字符

**************** ********** **************************************** *********** *********

//校验普通电话、传真号码:可以“+”或数字开头,可含有“-” 和 “ ”
/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/
\d:用于匹配从0到9的数字;
“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次
可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等

******************************** *************** *********************************** ********

//校验URL
/^http[s]{0,1}:\/\/.+$/ 或 /^http[s]{0,1}:\/\/.{1,n}$/ (表示url串的长度为length(“https://”) + n )
\ / :表示字符“/”。
. 表示所有字符的集
+ 等同于{1,},就是1到正无穷吧。

******** ********************************* ****************** *************************

//校验纯中文字符
/^[\u4E00-\u9FA5]+$/
[\u4E00-\u9FA5] :估计是中文字符集的范围吧
以上表达式均在下面的javascript中测试通过
<html>
<script language="JavaScript">
<!--
function regx(r,s)
{
    if (r == null || r == ""){
       return false;
    }
    var patrn= new RegExp(r);
    if (patrn.exec(s))
       return true
    return false
}
-->
</script>
<body>
<form>
    规则表达式 : <input type="input" name="regxStr" value="" > (填写/ /之间的表达式)
<br>
    校验字符串 : <input type="input" name="str" value="" >
    <input type="button" name="match" value="匹配" onClick="alert(regx(regxStr.value,str.value));">
</form>
</body>
</html>

이 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 기타 관련 기사를 주목하세요!

관련 읽기:

Js를 사용하여 HTTP 쿠키를 구현하는 단계


로컬 웹 저장소에 대한 자세한 소개


CSS의 텍스트 글꼴 색상을 설정하는 방법

위 내용은 정규식 구현 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.