2015-12-21 57 views
1

我正在使用xml 1.0,實際上是xsd-schema,所以我使用正則表達式限制,所以我對lookahead負面有一個問題。正如我讀過的,在xml 1.0限制中沒有預覽功能。xa中的lookahead負

前提條件:

  1. 字符串起始和沒有 「/」 結尾;
  2. 字符串中沒有「//」;
  3. 字符串長度是1-16。

所以請幫助我的正則表達式等同結合:

([-+A-Z\w\s:?().,'](?:[-+A-Z\w\s:?().,']|/(?!/)){1,14}[-+A-Z\w\s:?().,']) 

回答

1

編輯:B計劃?

^[a-zA-Z0-9]([\/][a-zA-Z0-9]|[a-zA-Z0-9])*$ 

然後:

<?xml version="1.0" encoding="UTF-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:simpleType name="LimitedString"> 
    <xs:restriction base="xs:string"> 
     <xs:length value="16" /> 
     <xs:pattern value="[a-zA-Z0-9]([\/][a-zA-Z0-9]|[a-zA-Z0-9])*"/> 
    </xs:restriction> 
</xs:simpleType> 
</xs:schema> 
+0

我affraid這是不正確的表達,因爲這樣的文字是比賽,但贏得't是:151201 // 09010008 –

+0

如果你將[\ /]更正爲[/]並刪除「^」和「$」 –

+0

啊,對不起我正在使用的正則表達式測試 –

0

只需添加^$你的正則表達式只匹配整個輸入字符串:

^([-+A-Z\w\s:?().,'](?:[-+A-Z\w\s:?().,']|/(?!/)){1,14}[-+A-Z\w\s:?().,'])$ 

Regular expression visualization

看到一個demo here


\w相當於[0-9a-zA-Z_],這樣你就可以留下遠A-Z簡化您的正則表達式:

^([-+\w\s:?().,'](?:[-+\w\s:?().,']|/(?!/)){1,14}[-+\w\s:?().,'])$