带有中文和英文unicode的正则表达式

时间:2018-12-14 13:34:18

标签: javascript jquery regex ecmascript-6

我正在尝试检测以下内容中带有一些汉字的主题标签:

#xyz Wo hat man die beste Aussicht auf die F1 Rennbahn? Kai Ebel hat 
einen Tipp für euch ! #visitsingaporeFür den Überblick: #ViewFromTheTop
Einer der besten Orte in Singapur , um das Nachtrennen von oben zu sehen
, ist für mich CE LA VI auf dem Marina Bay Sands. #wea周有七天 Die #kkk.
Panorma Sicht auf die Stadt und auf die Rennbahn sind spektakulär !
#visitsingapore https://s.l/JA5DAF #abc #周有七天 #a七

我尝试过的正则表达式是:

#[\u4E00-\u9FCC]+|#(\w)

但是无法检测到像#wea周有七天这样的完整主题标签?

2 个答案:

答案 0 :(得分:5)

类似于以下内容吗?

var string = '#xyz Wo hat man die beste Aussicht auf die F1 Rennbahn? Kai Ebel hat einen Tipp für euch ! #visitsingaporeFür den Überblick: #ViewFromTheTopEiner der besten Orte in Singapur , um das Nachtrennen von oben zu sehen, ist für mich CE LA VI auf dem Marina Bay Sands. Die #kkk. Panorma Sicht auf die Stadt und auf die Rennbahn sind spektakulär ! #visitsingapore https://s.l/JA5DAF #abc #周有七天 #a七 #wea周有七天';

const REGEX = /(#[\u4E00-\u9FCC]+|#(\w)\p{Script=Hani}.+|#(\w)+)/gu;
console.log(string.match(REGEX));

要匹配中文,只需执行以下操作:

const REGEX = /(\p{Script=Hani})+/gu;
console.log('你好'.match(REGEX));

技巧是使用\ p并使用正确的脚本名称,Hani代表Han脚本(中文)。脚本的完整列表在这里:http://unicode.org/Public/UNIDATA/PropertyValueAliases.txt

答案 1 :(得分:0)

如果您需要匹配所有包含混合中文(在[\u4E00-\u9FCC]和非中文字符中)的标签,则可以使用

#[^\s]*[\u4E00-\u9FCC]+[^\s]*

说明:匹配0个或多个非空格,并且在[\u4E00-\u9FCC]范围内至少匹配一个字符。

txt = "#xyz Wo hat man die beste Aussicht auf die F1 Rennbahn? Kai Ebel hat einen Tipp für euch ! #visitsingaporeFür den Überblick: #ViewFromTheTop Einer der besten Orte in Singapur , um das Nachtrennen von oben zu sehen, ist für mich CE LA VI auf dem Marina Bay Sands. #wea周有七天 Die #kkk. Panorma Sicht auf die Stadt und auf die Rennbahn sind spektakulär ! #visitsingapore https://s.l/JA5DAF #abc #周有七天 #a七";

console.log(txt.match(/#[^\s]*[\u4E00-\u9FCC]+[^\s]*/gu));