我有一个需要匹配的模式,该模式始终是日期“ _YYYYMMDD”。但是,我不想包含“ _”和“。”。结果。我有一个成功匹配上面的正则表达式模式。它太复杂了,无法包含在这里,因为我不得不亲手写并且弄乱它。
足以说明我有一个模式:
[_](lots of stuff in the middle)[.]
它工作正常,但我不想包含“ _”和“。”
任何答案都将不胜感激。谢谢!
答案 0 :(得分:1)
要使下划线和点与模式匹配,并且不将其包括在完整的匹配文本中,则需要在正则表达式模式中使用环视。后面的正则表达式将匹配前跟_
和后跟.
(?<=_)\d{8}(?=\.)
此外,如果要将年,月和日部分捕获到自己的捕获组中,则可以使用此正则表达式从组1中捕获年部分,从组2中捕获月,从组3中捕获日期,
(?<=_)(\d{4})(\d{2})(\d{2})(?=\.)
答案 1 :(得分:0)
最简单的方法是从结果中切出第一个和最后一个字符。您可以通过字符串长度来做到这一点:
result="${result:1:8}"
(或result="${result#_}"
result="${result%.}"
,因为长度将是恒定的)
或按特定字符:
const App = () => (
<Router>
<div>
<CustomNavbar />
<Switch>
<Route path={ROUTES.SIGN_UP} component={SignUpPage} />
<Route path={ROUTES.SIGN_IN} component={SignInPage} />
<Route path={ROUTES.PASSWORD_FORGET} component={PasswordForgetPage} />
<Route exact path={ROUTES.HOME} component={HomePage} />
<Route path={ROUTES.ACCOUNT} component={AccountPage} />
<Route path={ROUTES.ADMIN} component={AdminPage} />
<Route path={ROUTES.MANAGER} component={Manager} />
<Route path={ROUTES.DEFAULT_SETTINGS} component={DefaultSettings} />
<Redirect to={ROUTES.HOME} />
</Switch>
</div>
</Router>
);
export default withAuthentication(App);