Вы можете попробовать добавить общую службу к компонентам, которые могут удерживать URL-адрес и добавлять к нему, когда вы проходите каждый шаг. Что-то вроде этого:
export class URLService {
private URL: string[] = [];
public addToURL(segment: string): void {
this.URL = [ ...this.URL, segment ];
}
public retrieveURL(): string {
return this.URL.join('/');
}
}
. Вставьте URL-адрес в любой компонент, который вы используете для создания URL-адреса, и каждый раз, когда у вас есть новый элемент для добавления, вызовите urlService.addToURL('item')
. Затем, когда вы будете готовы к полному URL-адресу, вызовите urlService.retrieveURL()
, чтобы получить строку, которую вы можете использовать.
Вы можете использовать отрицательный взгляд за спиной :
let regEx = "(?<!((https|http)://))((\\w|-)+)(([.]|[/])((\\w|-)+))+"
Таким образом, с учетом этих строк:
let string1 = "https://www.google.com"
let string2 = "stackoverflow.com/questions/54269877/regex-for-specific-urlfield"
Результат оценки их с тем же предикатом: [117 ]
let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[regEx])
даст ожидаемые результаты:
predicate.evaluate(with: string1) //false
predicate.evaluate(with: string2) //true