我正在尝试检索字符串的第一个字母单词,其中可能还包括标签。
我尝试使用split(“”),但是它给了我空格。
let letter = ' <section class="contact" id="contact">';
let firstWord = letter.split (" ");
它应该只显示第一个单词为section。有什么办法可以做吗?谢谢
答案 0 :(得分:1)
要获取第一个单词,请匹配一个非字母,然后匹配一个捕获组中的一个或多个字母,然后匹配另一个非字母:
let letter = ' <section class="contact" id="contact">';
let [, firstWord] = letter.match(/[^a-z]([a-z]+)[^a-z]/i);
console.log(firstWord);
答案 1 :(得分:1)
简单的正则表达式可匹配字母(非字母数字)单词Connection timed out error
ffplay
答案 2 :(得分:1)
您可以根据实际需要使用几种解决方案。
在当前情况下,您可以匹配1个以上的ASCII字母
let letter = ' <section class="contact" id="contact">';
let first_word = (letter.match(/[a-z]+/i) || [""])[0];
console.log(first_word)
您可以使用\b
,单词边界告诉正则表达式引擎仅在其附近没有数字或下划线的情况下匹配它:
/\b[a-z]+\b/i
如果您想匹配任何Unicode字母词并定位 ECMAScript 2018 及更高版本,则可以使用
let regex = /\p{Alphabetic}+/u;
console.log("Один,два".match(regex)[0]); // => Один
或者,使用Unicode单词边界,
let regex = /(?<![\p{Alphabetic}\p{N}])\p{Alphabetic}+(?![\p{Alphabetic}\p{N}])/u;
console.log("1Один2,два-три".match(regex)[0]); // => два
也就是说,要匹配1个以上字母或数字之前或之后的字母字符。