Semântica e uso de objetos RegExp:
verifique correspondências de strings, obtenha parte do conteúdo da string e construa uma nova string com base na string original (incluindo adição, exclusão e modificação)
Existem duas maneiras principais de construir um objeto RegExp:
usar literal, como /w/g
Use um construtor, como new RegExp(/w/)
Há vários pontos a serem observados ao construir objetos RegExp:
literal é frequentemente usado para construir objetos RegExp estáticos que não são gerados pelo tempo de execução.
Os sinalizadores podem ser adicionados diretamente após o literal para limitar os resultados de execução de strings correspondentes. Os sinalizadores comumente usados incluem g e i, que são usados para representar a correspondência global (global) e a correspondência sem distinção entre maiúsculas e minúsculas (sem distinção entre maiúsculas e minúsculas), respectivamente.
O primeiro parâmetro do construtor RegExp fornece o padrão do objeto. Se o padrão for um literal RegExp, o segundo parâmetro (ou seja, especificando o sinalizador) não poderá ser fornecido. Se o padrão for uma string, você pode usar o segundo parâmetro
O construtor RegExp é frequentemente usado para construir objetos RegExp dinâmicos gerados por tempo de execução.
Quando o padrão de RegExp é string, todos os "" em literal devem ser escritos como "\", porque "" precisa ser escapado em string. Os dois métodos acima constroem um objeto javascript, então /w/ ==. /w/Return false
Funções relacionadas ao objeto RegExp:
Para verificar a correspondência de uma string, você pode usar o método regExp.test(string), que verifica se a string corresponde ao padrão fornecido por regExp. Você também pode usar o método string.search(regExp), que retornará -1 se os dois não corresponderem.
Para obter parte da string, você pode usar o método regExp.exec(string) ou pode usar o método string.match(regExp). Para construir uma nova string na string original, geralmente use string.replace(searchValue,). método replaceValue)
A semântica do padrão é fornecida no objeto RegExp:
RegExp pode definir múltiplas alternativas separadas por "|". Esta operação tem a prioridade mais baixa, portanto, se "|" existir, ela primeiro divide o RegExp em várias partes. Composto por termos, os termos são divididos em asserção (usada para qualificação posicional), átomo (unidade correspondente) e átomo com quantificador (modificador).
A asserção é dividida em "^" que é usada para corresponder ao início da string. Em multiInput (ou seja, quando o sinalizador contém m), ela também pode corresponder ao início de uma linha. final da string. Em multiInput (ou seja, quando o sinalizador contém m), também pode corresponder ao final de uma linha. "b" é usado para corresponder a um intervalo w e W. qualquer conteúdo da string, mas é usado apenas para determinar a correspondência de uma posição.
A situação do átomo é mais complicada. Vejamos primeiro o quantificador do átomo, que pode incluir * + ? {n} {m,} {m,n}, onde * significa que o átomo pode ter 0 ou mais repetições, + significa que o átomo pode ter 0 ou mais repetições. 1 ou mais Para as repetições acima, ? significa 0 ou 1 vezes, {n} significa exatamente n repetições, {m,} significa m ou mais repetições, {m,n} significa que o número de repetições está entre m e n (incluindo m e n ), o quantificador acima também pode ser seguido por um ? para iniciar o modo não ganancioso. Explicarei o significado deste modo mais tarde.
Atom contém patternCharacter (caracteres comuns, ou seja, caracteres sem semântica especial no padrão, que serão correspondidos literalmente)
"." corresponde a todos os caracteres sem terminação de linha
AtomEscape contém o numérico 1 (usado para se referir à correspondência bem-sucedida entre parênteses anteriores). Referências a alguns caracteres n f r t v xNN uXXXX cX, etc. Alguns caracteres com significados especiais, como d D s S w W
CharacterClass contém dois formatos: [...] e [^...]. Ele pode conter muitos caracteres, como -, n e outras referências de caracteres, b, d e outros caracteres de significado especial. Observe que se houver caracteres ao redor de "-", a semântica muda de um determinado caractere para um determinado caractere. Se não houver caracteres à esquerda ou à direita de "-", então "-" representa apenas o caractere traço.
(grupo), se você realizar o agrupamento no modo acima, poderá usar o Quantifier para modificá-lo após o grupo.
(?:grupo), usado apenas como um grupo, e o conteúdo correspondente ao grupo não será gravado e não será incluído em 1..n
(?=grupo), requer correspondência, mas não inclui o conteúdo correspondente do grupo na string correspondente retornada
(?!group), não requer correspondência e não incluirá o conteúdo correspondente do grupo na string correspondente retornada. Agora quero falar sobre os dois modos operacionais mais importantes do RegExp:
A alternativa de correspondência é sempre da esquerda para a direita. a primeira correspondência não tentará mais correspondências subsequentes, como
/ab|abc/.exec("abc"). A string acima "abc" corresponde apenas a ab no padrão e não corresponderá a abc
. Se ? não for adicionado após o Quantifier, o modo ganancioso será usado. Após adicionar ?, o modo não ganancioso será usado
. sempre combine o máximo de correspondências possível primeiro (ou seja, modo ganancioso), então corresponderá a "abcbcbc". Se for alterado para
/w+?bc/.exec("abcbcbc"), então corresponderá ao menor número possível ( isto é, modo não ganancioso), portanto corresponderá apenas a "abc".
Para requisitos gerais de análise de string, geralmente você pode usar o método exec ou match para analisar. Se a string for grande, muitas vezes você precisará usar uma estrutura de loop para análise, que é muito poderosa quando combinada com while e outras instruções.
Quando você deseja converter uma string existente em outra string, modificando-a, geralmente você sempre usa o método replace. Este método é o método mais importante no RegExp, na minha opinião. Seu polimorfismo faz com que ele tenha muitas formas. necessidades de modificação de strings.