2013-10-02 3 views
2

Мне нужно избавиться от символов «↵» из строки, но я получаю странное поведение от RegExp. Может кто-то это объяснить:Почему Javascript RegExp test дает «false» значение unicode этого символа?

var str = "↵Since we are starting our webservice..."; 

alert(str.charAt(0)) 
alert(str.charCodeAt(0)); 

alert(/\u8629/.test("↵")); 

http://jsfiddle.net/SXYAn/1/

методы объекта Строка скажите мне Юникода код «↵» является 8629, но RegExp говорит, что это не так.

+0

Почему не 'alert (/↵/g.test (str));'? –

+0

Это просто говорит мне, что персонаж присутствует в моей строке, и я это уже знаю. Мне нужно заменить (/ \ u8629/gm, ''), но это не работает, потому что RegExp ведет себя следующим образом. – Zemljoradnik

ответ

6

Вы возвращаете charCode как десятичное число, и при тестировании в regEx вам нужно использовать номер HEX.

8629 = 0x21b5.

Я использовал this, чтобы понять это.

+1

[правильный] (http://jsfiddle.net/SXYAn/2/) – Emissary

+1

Вы, сэр, только что сохранили жизнь одного программиста. Правым юникодом для использования с RegExp является \ u21b5. – Zemljoradnik

Смежные вопросы