Expressão regular (linguagem JavaScript)

Referência de conteúdo do artigo: guia definitivo de JavaScript

Um: a API do aplicativo de expressões regulares

Correspondência regular: use a entrada correspondente (string) -> após as regras de correspondência (objeto de expressão regular) -> obtenha a saída correspondente (string)

Método 1: objeto String (comumente usado no desenvolvimento diário)

método Exemplo 1 Exemplo 2 Nota
pesquisa “Aba” .search (“b”) , return 1 'aba'.search (/ a / g) , retornar 0 O modificador g é ignorado e a pesquisa global não é suportada
substituir 'abxAb'.replace (/ ab / gi,' cd ') , retorna' cdxcd ' “'Abc'”. Substituir (/ '([^'] *) '/,' “$ 1” ') , retornar' “abc” ' 1. Quando um parâmetro é passado em uma string, ele é tratado como uma correspondência direta de quantidade regular. 2. Suporte $ sintaxe para citação
Combine '1x2x3x'.match (/ \ d + / g) , retornar [' 1 ',' 2 ',' 3 '] 'xx http: //xx.com'.match (/ (\ w +:) // ([\ w.] +) /) , return [“http://xx.com”, “http:”, “ xx.com ”] Retorna a matriz a, a [0] é o resultado correspondente, a [x] é o resultado correspondente da subexpressão ()
Dividido '123,456'.split (', ') , retornar [' 123 ',' 456 '] '1, 2, 3'.split (/ \ s *, \ s * /) , return [' 1 ',' 2 ',' 3 '] O parâmetro do método de divisão suporta expressões regulares

Método 2: objeto RegExp

estrutura
  • Comparado com a expressão regular quantidade direta / xxx / método para criar um objeto, o método do construtor RegExp pode criar dinamicamente uma expressão regular
let re  = new RegExp('\\d{5}','g')	// 由于字符串转义前缀也为\,所以传入的字符串中需先使用\转义\
// 等同于 
let re = /\d{5}/g 
Atributos

Insira a descrição da imagem aqui

Nome do Atributo significado Exemplo Nota
fonte Texto de expressão regular /\d/gi.source,return '\ d' Atributo de acesso, somente leitura, com get, sem set
global Modificador g, se corresponde globalmente /\d/gi.global,return true Atributo de acesso, somente leitura, com get, sem set
ignorar caso Modificador i, se o caso corresponde /\d/gi.global,return true Atributo de acesso, somente leitura, com get, sem set
multilinha Modificador m, se deve combinar várias linhas /\d/gi.global,return false Atributo de acesso, somente leitura, com get, sem set
lastIndex Os métodos exec e test são comumente usados ​​e apontam para o início da partida Os exemplos de métodos de teste e exec a seguir Atributos de dados, legíveis e graváveis

Insira a descrição da imagem aqui

método

Insira a descrição da imagem aqui

Nome do método significado Exemplo Nota
exec Uso do iterador de classe. Quando não há modificador g, é consistente com correspondência. Quando há um modificador g, exec termina após a primeira correspondência ser bem-sucedida (o método de correspondência de string termina depois que a correspondência completa é concluída) e o atributo lastIndex é atualizado para apontar para o início da próxima correspondência Como mostrado abaixo A figura a seguir mostra que, para ES5, as expressões regulares não têm o conceito de um "conjunto de constantes de expressão regular" e cada uso é um novo objeto. (Após ES5, a quantidade direta regular Js é inconsistente com o projeto de quantidade direta Java String)
teste Semelhante ao uso de exec, mas retorna se a correspondência for bem-sucedida Como mostrado abaixo A posição correspondente está diretamente relacionada ao valor do atributo lastIndex do objeto regular
  • exemplo de método exec
    Insira a descrição da imagem aqui
  • exemplo de método de teste
    Insira a descrição da imagem aqui

Dois: a sintaxe das expressões regulares / xxx /

1. Meça caracteres diretamente

personagem Combine
letra e número em si
\ t Abas
\ n Nova linha

2. Classe de personagem []

personagem Combine
[…] Qualquer caractere entre colchetes
[^…] Qualquer caractere que não esteja entre colchetes
. Qualquer caractere, exceto caracteres de nova linha e outros terminadores de linha Unicode
\ d Equivalente a [0-9]
\ D Equivalente a [^ 0-9]
\W Equivalente a [a-zA-Z0-9]
\W Equivalente a [^ a-zA-Z0-9]
\ s Qualquer espaço em branco Unicode
\ S Qualquer caractere de espaço em branco não Unicode
[\ b] Backspace

3. Repita {}

personagem significado
{n} Corresponde ao item anterior n vezes
{n,} Corresponde ao item anterior pelo menos n vezes
{n, m} Corresponde ao item anterior [n, m] vezes
Equivalente a {0,1}
+ Equivalente a {1,}
* Equivalente a {0,}
/\s+java\s+/	匹配前后带有一个或多个空格的字符串'java'
Correspondência repetida não gananciosa
  • Primeiro, olhe para o seguinte exemplo
1.输入:aaa 		规则:/a+/ 			输出:aaa 	匹配到第一个a即满足匹配规则,但它会继续往下尝试匹配(贪婪),输出aaa
2.输入:aaa 		规则:/a+?/ 			输出:a  	匹配到第一个a即满足匹配规则,匹配结束(一个就饱了,不贪婪),输出第一个a
3.输入:aaab 	规则:/a+b/ 			输出:aaab	
4.输入:aaab 	规则:/a+?b/ 		输出:aaab	匹配到第一个a而后寻找到b后才满足匹配规则,和例3一样,输出第一个匹配结果aaab。
5.输入:aaabb 	规则:/a+b+?/ 		输出:aaabb	
6.输入:aaabb 	规则:/a+b+?/ 		输出:aaab	匹配到aaab后满足规则,不向后贪婪匹配那个b,输出aaab
结论:在没有匹配成功前,无所谓贪婪不贪婪,也即非贪婪的重复匹配符号得放在正则表达式末尾才有意义。

4. Seleção, agrupamento e citação

personagem significado
| Seleção, que corresponde à subexpressão à esquerda ou à direita do símbolo
(…) Combinação, combinando vários itens em uma unidade
  • Caso para ver detalhes
1.输入:abcb				规则:/(a(b))(c)\2/			输出:abcb				1证:引用的位置是参与计数的左括号的位置,(?:xxx)分组用的左括号不计
2.输入:' a " b " ' 		规则:/['"][^'"]*['"]/		输出:' a "
3.输入:' a " b " ' 		规则:/(['"])[^'"]*\1/		输出:' a " b " ' 		23证:引用的是正则表达式模式匹配后的文本,不是正则表达式模式。
4.输入:' a " b " ' 		规则:/(['"])[^\1]*\1/		输出:错误(此种引用不能在字符类中使用)

5. Especifique o local correspondente

personagem significado
^ Partida começando
$ Fim da partida
\ b Corresponde a um limite de palavra (a posição entre \ w e \ W ou a posição entre o caractere \ w e o início / fim da string)
\ B Combine limites não-palavra

6. Modificadores

  • O modificador é colocado fora do símbolo "/"
personagem significado
Eu Executar correspondência que não diferencia maiúsculas de minúsculas
g Execute uma correspondência global (o padrão é parar quando a primeira for encontrada)
m Modo de correspondência multilinha, neste modo, ^ corresponde ao início da linha e $ corresponde ao fim da linha

Acho que você gosta

Origin blog.csdn.net/jw2268136570/article/details/107254725
Recomendado
Clasificación