【发布时间】:2020-10-06 07:26:17
【问题描述】:
我有一个字符串,其中包含我要查找的标题(-title 或 -t 开关)。
some_string -title "myTitle" some_more_string
为此,我创建了一个正则表达式,它在开发过程中以及在 Android + Windows 设备上都有效。在发布用户抱怨的页面后,该页面显示 iOS 设备的空白页面。在检查和谷歌搜索之后,似乎提到的标题检查是原因。 (Works in Chrome, but breaks in Safari: Invalid regular expression: invalid group specifier name /(?<=\/)([^#]+)(?=#*)/)
我的标题正则表达式使用环视断言,据报道这对 iOS 不利。
import { Pipe, PipeTransform } from '@angular/core';
const titleExpression: RegExp = /(?<=\-t(itle)? ")[^"]+/;
@Pipe({
name: 'findTitle'
})
export class FindTitlePipe implements PipeTransform {
transform(value: string): string {
return value ? value.match(titleExpression)[0] : '';
}
}
但是,我对替代解决方案有点迷茫。请指教。
编辑:
我现在决定使用拆分方法。 (这也有待改进,但那是另一回事了)
transform(value: string): string {
const tokens: string[] = value.split(' ');
const foundAt: number = tokens.findIndex(token => ['-t', '-title'].includes(token));
return foundAt === -1 ? '' : tokens[foundAt + 1].replace('"', '');
}
【问题讨论】:
标签: javascript angular regex typescript safari