Pregunta

En JavaScript:

"ab abc cab ab ab".replace(/\bab\b/g, "AB");

Me da correctamente:

"AB abc cab AB AB"

Cuando uso caracteres UTF-8 sin embargo:

"αβ αβγ γαβ αβ αβ".replace(/\bαβ\b/g, "AB");

palabra operador límite no parece trabajo:

"αβ αβγ γαβ αβ αβ"

¿Hay una solución para esto?

¿Fue útil?

Solución

La declaración límite de palabra única coincide si una palabra personaje no está precedido o seguido de otro carácter de palabra (por lo .\b. es igual a \W\w y \w\W). Y \w se define como [A-Za-z0-9_]. Así \w no coincide con caracteres griegos. Y por lo tanto no se puede utilizar \b para este caso.

Lo que podría hacer en su lugar es utilizar esto:

"αβ αβγ γαβ αβ αβ".replace(/(^|\s)αβ(?=\s|$)/g, "$1AB")

Otros consejos

No todos Javascript expresión regular aplicación tiene soporte para Unicode anuncio por lo que necesita para escapar de ella

"αβ αβγ γαβ αβ αβ".replace(/\u03b1\u03b2/g, "AB"); // "AB ABγ γAB AB AB"

Para la cartografía de los caracteres que se puede echar un vistazo a http://htmlhelp.com /reference/html40/entities/symbols.html

Por supuesto, esto no ayuda con el tema límite de palabra (como se explica en otras respuestas), pero al menos debería permitirle hacer coincidir los caracteres correctamente

Yo necesitaba algo para ser programable y mango de puntuacion, soportes, etc.

http://jsfiddle.net/AQvyd/

var wordToReplace = '買い手',
    replacementWord = '[[BUYER]]',
    text = 'Mange 買い手 information. The selected Store and Classification will be the default on the สั่งซื้อ.'

function replaceWord(text, wordToReplace, replacementWord) {
    var re = new RegExp('(^|\\s|\\(|\'|"|,|;)' + wordToReplace + '($|\\s|\\)|\\.|\'|"|!|,|;|\\?)', 'gi');
    return text.replace(re, replacementWord);
}

He escrito un editor de recursos javascript por lo que esta es la razón por lo que he encontrado esta página y también respondió por necesidad ya que no pude encontrar un límite de palabra expresión regular parametarized que funcionó bien para Unicode.

No todas las implementaciones de expresiones regulares asociados con los motores de Javascript Unicode una cuenta.

Por ejemplo Microsofts JScript utilizando en IE se limita a ANSI.

Cuando usted está tratando con Unicode y palabras de lenguaje natural, es probable que desee tener más cuidado con los límites que simplemente usar \b. Ver esta respuesta para obtener más información y direcciones.

scroll top