我正在將一些php代碼移植到nodejs中。
這個問題我有顧慮這個PCRE正則表達式:使用Unicode從PHP到Javascript的正則表達式
/\/?_?[0-9]*_?([^\/\._]*)[_#*\-*\.?\p{L}\p{M}*]*$/u
(這個表達式匹配_4_first_ääää
first
,在_first_äääää
或first_äääää
)
我在這方面使用XRegExp,但沒有運氣:
// lib/parser.js
var XRegExp = require('xregexp').XRegExp;
module.exports = {
getName : function(string){
var name = XRegExp('\/?_?[0-9]*_?([^\/\._]*)[_#*\-*\.?\p{L}\p{M}*]*$');
var matches = XRegExp.exec(string, name);
if(matches && matches.length > 0){
return matches[1];
}
else{
return '';
}
}
};
而且測試(摩卡),其去與它:
// test/test.js
var assert = require("assert");
var parser = require('../lib/parser.js');
describe('parser', function(){
describe('#getName()', function(){
it('should return the name contained in the string', function(){
assert.equal('test', parser.getName('3_test'));
assert.equal('test', parser.getName('test'));
assert.equal('test', parser.getName('_3_test'));
assert.equal('test', parser.getName('_3_test_ääää'));
assert.equal('test', parser.getName('_3_test_boom'));
})
})
})
而且測試結果:
0 passing (5ms)
1 failing
1) parser #getName() should return the name contained in the string:
AssertionError: "test" == "ääää"
+ expected - actual
+ääää
-test
此代碼相匹配
ääää
。
評論線捕獲
first
所以我想我想念unicodes caracter類。
我的問題是:我怎樣才能讓我原來的PHP正則表達式在javascript中工作?
Mmaybe有工作嗎?
有作爲 「PHP正則表達式」 沒有這樣的事。你可能意思是'perl兼容正則表達式'(或'preg')。我必須承認,我一點也不贊同XRegExp,所以不能真正幫助你。您需要查看兩者之間的解析差異。 – Tularis
@tularis - 通常人們會用一些有用的東西跟進不必要的澄清。 – Anthony
聲明:我不知道XRegExp,所以我可能是錯的。但是你似乎在第一個語句中錯過了分隔符:'XRegExp('\'。你可能想要像'XRegExp'('@ /?_?... * $ @')'' –